CPU分析系列--sysstat分析系统负载

目录

mpstat:关于CPU的详细信息,单独输出或者分组输出;

pidstat:关于运行中的进程/任务、CPU、内存等的统计信息;

1.模拟cpu密集型负载:

        1.stress --cpu 1 --timeout 600:模拟对1个cpu增加压力,持续600s;

        2.查看系统负载情况:watch -d uptime:

        3. 监控所有cpu情况:mpstat -P ALL 5:每5s更新一组数据;

         4.查看运行中的所有进程的cpu使用情况:pidstat -u 5 1:

        5.找到原因:是因为stress进程产生压力过大. 

2.模拟I/O密集型负载:

        1.产生压力:stress -d 1 -t 600:

         2.查看系统负载情况:watch -d uptime

       3.查看各进程对cpu的使用情况:pidstat -u 1

       4.查看系统cpu的总体使用情况:mpstat -P ALL 5

         5.查看是哪个进程I/O读写高:pidstat -d 1 3(-d参数查看各进程io情况)

3.总结:

        cpu使用率是单位时间内cpu繁忙情况的统计,跟系统平均负载不一定完全对应:

        1.cpu密集型进程,使用大量cpu,会导致平均负载升高,此时cpu%和load average可对应关系;

        2.I/O密集型进程,等待I/O也会导致load average升高,但cpu%使用率不一定高.

        3.系统中存在大量等待cpu调度的进程,会使load average平均负载和cpu使用率都升高.


sysstat是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如:CPU 使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行.

stress是Linux下的一个压力测试工具,可以对cpu、memory、IO以及磁盘进行压力测试,可以指定负载的cpu个数.

-c, --cpu N 产生 N 个进程,每个进程都反复不停的计算随机数的平方根
-i, --io N 产生 N 个进程,每个进程反复调用 sync() 将内存上的内容写到硬盘上
-m, --vm N 产生 N 个进程,每个进程不断分配和释放内存
-t, --timeout N 在 N 秒后结束程序
-d, --hadd N 产生 N 个不断执行 write 和 unlink 函数的进程(创建文件,写入内容,删除文件)

 

安装stress:yum install -y stress.

安装:yum install -y sysstat.

mpstat:关于CPU的详细信息,单独输出或者分组输出;

pidstat:关于运行中的进程/任务、CPU、内存等的统计信息;

-u 默认的参数,显示各个进程的CPU使用统计
-r 显示各个进程的内存使用统计
-d 显示各个进程的IO使用情况
-p 指定进程号
-w 显示每个进程的上下文切换情况
-t 显示选择任务的线程的统计信息外的额外信息 
-T { TASK | CHILD | ALL }
这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
-V:版本号
-h:在一行上显示了所有活动,这样其他程序可以容易解析。
-I:在SMP环境,表示任务的CPU使用率/内核数量
-l:显示命令名和所有参数

1.模拟cpu密集型负载:

        1.stress --cpu 1 --timeout 600:模拟对1个cpu增加压力,持续600s;

        2.查看系统负载情况:watch -d uptime:

                初始信息:

                  产生压力后系统平均负载信息:

                因为此处只模拟对1个cpu施压,1分钟内平均负载为1,说明系统此时过载.

        3. 监控所有cpu情况:mpstat -P ALL 5:每5s更新一组数据;

                初始信息:

                 产生压力后信息:

         4.查看运行中的所有进程的cpu使用情况:pidstat -u 5 1:

                        每5s更新1次,只更新1次

                        初始信息:

                          产生压力后信息:显示用户态进程stress对cpu使用率为100%.

        5.找到原因:是因为stress进程产生压力过大. 

 _____________________________________________________________________________

2.模拟I/O密集型负载:

        1.产生压力:stress -d 1 -t 600:

                模拟1个进程对disk做I/O操作,持续600s.

         2.查看系统负载情况:watch -d uptime

                显示最近1分钟系统过载(2cpu-->2.87)

 排查:

       3.查看各进程对cpu的使用情况:pidstat -u 1

                显示未占用过多cpu调度

       4.查看系统cpu的总体使用情况:mpstat -P ALL 5

                显示cpu使用率低,但是%iowait高,表示cpu等待I/O读写进程,说明系统正在进行I/O操作.

         5.查看是哪个进程I/O读写高:pidstat -d 1 3(-d参数查看各进程io情况)

                此处可以看到是stress进程I/O高.

_____________________________________________________________________________

3.总结:

        cpu使用率是单位时间内cpu繁忙情况的统计,跟系统平均负载不一定完全对应:

        1.cpu密集型进程,使用大量cpu,会导致平均负载升高,此时cpu%和load average可对应关系;

        2.I/O密集型进程,等待I/O也会导致load average升高,但cpu%使用率不一定高.

        3.系统中存在大量等待cpu调度的进程,会使load average平均负载和cpu使用率都升高.

猜你喜欢

转载自blog.csdn.net/qq_40132294/article/details/121438830