Linux性能优化(CPU篇)(3)

您所在的位置:网站首页 linux查看cpu负载高的进程 Linux性能优化(CPU篇)(3)

Linux性能优化(CPU篇)(3)

2023-03-30 03:55| 来源: 网络整理| 查看: 265

接上文,上文已经讲了“平均负载”与“CPU使用率”的区别,这一篇介绍观测系统平均负载的常用工具。

先熟悉两个工具,stress与sysstat。

stress是一个Linux系统压力模拟工具,可用于模拟异常进程导致平均负载升高的场景。sysstat包含了用于监控和分析系统性能的常用工具,常用命令为mpstat、pidstat。

1、CPU密集型进程模拟与定位

在用stress命令前可以看下系统负载如下:

使用stress命令模拟CPU密集型进程,然后每隔两秒输出uptime命令,查看load averge指标,可以看到最近一分钟负载明显增大。

此时我们不清楚到底是什么进程导致平均负载激增,使用mpstat查看CPU使用率的变化情况,如下图:

明显0号CPU的使用率达到100%,再看其iowait指标为0,显然不是由于等待I/O导致的平均负载升高。确定了是CPU密集型运算导致的平均负载升高,那么到底是哪个进程导致了CPU使用率为100%的呢,此时需要使用pidstat来查询,如下图:

注意%CPU例,显然是stress命令导致的,进程号为3554。

2、I/O密集型进程模拟与定位

在stress模拟I/O密集型进程前,查看当前系统负载,如下图:

每隔两秒观察下uptime的输出如下图:

系统最近一分钟平均负载逐渐增大到>1。

用mpstat命令查看CPU使用率的使用情况,如下图,其中一项%sys为98.80%,%iowait为1.00%,可以确定就是此原因导致的系统平均负载升高。(这里为什么%iowait并不是很大,后面会解释)

使用pidstat命令查看哪个进程导致的CPU使用率升高,%CPU一列中明显可以看到是stress导致的。

3、大量进程的模拟与定位

当系统中出现大量进程,而CPU来不及调度的时候,就会出现等待CPU的进程。

由于我们的系统有4个CPU,我们模拟16个进程。话不多说,直接模拟看看。

模拟前可以看到最近一分钟平均负载为0。

模拟16个进程后,如下图,瞬间电脑风扇都转了,平均负载直接秒飙到10以上,

pidstat查看进程的cpu利用率,如下图:

至此我们找到了平均负载急剧增加的原因。

欢迎订阅微软倪老师的课程,课程里有更多的详尽深入原理的解释。最近优惠好像没有了,感觉元旦应该还有一波的。也可以加极客时间专栏运营丸子微信号:lsyxysc ,是个大美女,可以问看看什么时候会有活动。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3