在这个页,它表示 /proc/loadavg 输出的前三列测量最后一分钟、五分钟和 10 分钟周期的 CPU 和 IO 利用率。
单个值是否可以同时显示 CPU 和 IO 利用率?如果我只想知道 CPU 利用率怎么办?或者只是 IO 利用率?
或者,从这个单一值,我如何知道服务器有多重?
答案1
平均负载意味着有多少进程在队列中等待。它不仅是 CPU 指标,而且不以百分比显示 CPU 利用率。平均负载显示近似的系统负载。
看UNIX 平均负载为了更好的理解。
在本文档中:
- “负载”不是利用率,而是队列总长度。
- 它们是三个不同时间序列的点样本。
- 它们是指数阻尼移动平均线。
- 它们以错误的顺序表示趋势信息。
计算CPU空闲目前的时间使用情况/proc/stat
(取自这里):
average idle percentage X % = ( idle * 100 ) / ( user + nice + system + idle + iowait + irq + softirq )
所以要计算CPU利用率使用:
grep 'cpu ' /proc/stat | awk '{usage=100-($5*100)/($2+$3+$4+$5+$6+$7+$8)} END {print usage}'
CPU 利用率计算并不像看起来那么容易。观点差不多话题
一些结论:
- 不要仅分析 CPU 利用率而不分析其他硬件/软件指标。使用磁盘、RAM、网络使用情况得出完整的结论(并且可能是每个进程的负载);
- 不要仅根据负载平均参数做出结论。您可以使用平均负载作为解决性能问题的起点;
- 使用方法:
如果1分钟负载更多的负载超过 5/10 分钟 -> 系统负载正在增长
如果1分钟负载较少的超过 5/10 分钟负载 -> 系统负载降低
并阅读精彩文章:Linux 平均负载:解开谜团
答案2
单个值是否可以同时显示 CPU 和 IO 利用率?
是的,它是 CPU 和磁盘利用率综合的粗略指示,但不是百分比。零意味着没有负载。如果您的系统有四个 CPU 核心,则值 4 表示系统满载,值 8 表示系统过载。 CPU 负载是比计算更好的指标,100 - idle CPU
因为后者不区分系统满载和系统过载的情况。
如果我只想知道 CPU 利用率怎么办?
看一下vmstat
第一列:r
。它显示使用或等待 CPU 的线程数。与之前的指标的解释相同。
或者只是 IO 利用率?
从寻找ìostat
输出开始。从这些统计数据中计算出磁盘负载比使用 CPU 更复杂,因为磁盘特性(每秒 I/O)和使用类型(顺序或随机、I/O 大小)都很重要。
或者,从这个单一值,我如何知道服务器有多重?
经验法则是,如果平均负载始终高于操作系统可用的核心/线程数,则服务器过载。
答案3
事实上,平均负载确实是一个很难看的项目。
文档说它显示 1m 5m 15m 的“平均值”。
这是一个弥天大谎。
如果您启动使用 1 个 cpu 线程 100% 持续 1 分钟的程序 - 1 分钟内的平均负载将不等于 1 。不不不。它将等于 0.62。
它没有任何实际意义。
5 分钟后,平均负载的第二个参数将不等于 1。 LA 的第二个参数仅在 18 分钟后才等于 1。
LA的第三个参数只有在60分钟后才等于1。
所以平均负载没有任何实际意义。
而且当它高时,不清楚是CPU使用率高还是HDD使用率高。
完全没用