/proc/loadavg 的“CPU 和 IO 利用率”是什么意思?

/proc/loadavg 的“CPU 和 IO 利用率”是什么意思?

在这个,它表示 /proc/loadavg 输出的前三列测量最后一分钟、五分钟和 10 分钟周期的 CPU 和 IO 利用率。

单个值是否可以同时显示 CPU 和 IO 利用率?如果我只想知道 CPU 利用率怎么办?或者只是 IO 利用率?

或者,从这个单一值,我如何知道服务器有多重?

答案1

平均负载意味着有多少进程在队列中等待。它不仅是 CPU 指标,而且不以百分比显示 CPU 利用率。平均负载显示近似的系统负载。

UNIX 平均负载为了更好的理解。

在本文档中:

  1. “负载”不是利用率,而是队列总长度。
  2. 它们是三个不同时间序列的点样本。
  3. 它们是指数阻尼移动平均线。
  4. 它们以错误的顺序表示趋势信息。

计算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 利用率计算并不像看起来那么容易。观点差不多话题

一些结论

  1. 不要仅分析 CPU 利用率而不分析其他硬件/软件指标。使用磁盘、RAM、网络使用情况得出完整的结论(并且可能是每个进程的负载);
  2. 不要仅根据负载平均参数做出结论。您可以使用平均负载作为解决性能问题的起点;
  3. 使用方法:

如果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使用率高。

完全没用

相关内容