记录一下以前操作Linux服务器时关于CPU操作指令的相关知识点,其实这些在实际生产中很少用到,使用时忘记后翻看回忆一下资料即可,这边记录了常用指令,有助于快速找到对自己有用的内容。
-
压测工具 stress
-
多进程工具 ,模拟IO密集型应用、CPU密集型应用、多进程等待CPU调度场景, 对CPU,内存,IO等情况进行压测
-
参数说明
参数 说明 --timeout 指定运行多少秒 --cpu N 产生多个处理sqrt()函数的CPU进程,每个进程高频的计算随机数的平方根,模拟 CPU 计算密集型场景 --io N 产生多个处理sync()函数的磁盘I/O进程,每个进程高频调用 sync(),刷内存缓冲区到磁盘,模拟 I/O 密集型场景 --vm N 每个进程高频调用内存分配 malloc() 和 内存释放 free() 函数 --vm-bytes 指定 malloc() 时申请内存的字节数,默认256MB --hdd N 产生N个高频执行write和unlink函数的进程 (创建/写入/删除 文件) , 属于磁盘IO进程 --hdd-bytes 每个 hdd worker进程写的byte数,默认1G -
-
需求一 :模拟CPU密集型应用,系统是4核
-
终端一 模拟两个 CPU核的使用率 100%,对2个cpu 进行压力测试 持续600s
stress --cpu 2 --timeout 600
-
终端二 -d 参数表示高亮显示变化的区域
watch -d uptime
-
终端三 mpstat 查看 CPU 使用率情况, 每5秒监控所有 CPU情况
mpstat -P ALL 5
-
终端四 查看运行中的进程和任务,每5秒刷新一次
pidstat -u 5
-
-
宏观思路
-
先看全局,找系统哪个资源问题,是CPU还是IO还是啥瓶颈
-
知道具体后,再看啥哪个进程导致的这个资源有问题
-
-
详细分析思路
-
全局
-
uptime :运行1分钟后,4个核的CPU负载是2,高负荷可以到4
-
mpstat :
-
应用场景:当系统变慢,CPU平均负载增大时,判断是CPU的使用率增大,还是IO压力增大的情况导致
-
CPU的两个核在用户态使用率是100%,两个核数空闲的,总的CPU使用率是50%,% iowait 为0,不存在io瓶颈
-
sqrt()函数的 CPU进程是在用户态,所以是%usr升高,而%sys没啥变化
-
-
-
-
局部
-
pidstat: 对进程和任务的使用情况进行,发现stress进程对2块cpu使用率过高,导致CPU平均负载增加
-
举一反三:如果不是stress,其他进程造成这类影响的,靠这个思路也能排查出是哪个进程,包括压测4个核
-
CPU使用率高,CPU平均负载也高; CPU平均负载高,CPU使用率不一定高
-
-
终端一:
终端二:
终端三:
终端四: