linux/proc/loadavg

Ult*_*ior 69 linux

从linux发出此命令时:

# cat /proc/loadavg
0.75 0.35 0.25 1/25 1747
Run Code Online (Sandbox Code Playgroud)

最后2个数字是多少?

最后一个每秒增加2,我应该担心吗?

aus*_*len 78

最后一个是系统最后15分钟的工作量.

的/ proc/loadavg

此文件中的前三个字段是负载平均数,给出运行队列中的作业数(状态R)或等待磁盘I/O(状态D)的平均时间超过1,5和15分钟.它们与正常运行时间(1)和其他程序给出的负载平均数相同.

第四个字段由两个用斜杠(/)分隔的数字组成.第一个是当前正在执行的内核调度实体(进程,线程)的数量; 这将小于或等于CPU的数量.斜杠后面的值是系统上当前存在的内核调度实体的数量.

第五个字段是最近在系统上创建的进程的PID.

  • 至少目前手册页不包含“小于或等于CPU数量”的字样,并且当您有更多可运行进程时,它会大于CPU数量。 (3认同)
  • 如果系统在 5 分钟前启动,那么他们将如何计算 15 分钟的平均负载?他们会只使用 5 分钟的数据吗? (2认同)

小智 14

前三列测量最后一个,五个和15分钟周期的CPU和I/O利用率.第四列显示当前正在运行的进程数和进程总数.最后一列显示最后使用的进程ID.

https://www.centos.org/docs/5/html/5.2/Deployment_Guide/s2-proc-loadavg.html

(我搜索了答案,所以你也可以这样做.)

  • 我强烈反对这个定义.前三个数字不直接测量CPU和I/O利用率*,它们是运行队列中或等待I/O的平均作业数,正如@auselen所说的那样. (5认同)

Ser*_*kov 13

我想对接受的答案发表评论.

第四个字段由两个用斜杠(/)分隔的数字组成.第一个是当前正在执行的内核调度实体(进程,线程)的数量; 这将小于或等于CPU的数量.

我做了一个测试程序,从输入中读取整数N,然后创建N个线程,并且它们永远运行它们.在RHEL 6.5计算机上,我有8个处理器,每个处理器都有超线程.无论如何,如果我运行我的测试并且它创建了128个线程,我在第四个字段值中看到大于128,例如135.它显然大于CPU的数量.这篇文章支持我的观察:http://juliano.info/en/Blog : Memory_Leak/Understanding_the_Linux_load_average

值得注意的是,proc(5)手册页中的当前解释(截至2009年3月的手册页版本3.21)是错误的.它将第四个字段的第一个数字报告为当前正在执行的调度实体的数量,因此预测它不能大于CPU的数量.这与实际实现不匹配,其中此值报告当前可运行线程的数量.

  • 可以确认:kernel / sched / core.c nr_running()将自身描述为收集* runnable *而不是* running *任务。 (3认同)

Val*_*lus 10

以下页面详细解释了这些内容:

http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

一些解释:

  • 如果平均值为 0.0,则您的系统处于空闲状态。
  • 如果 1 分钟平均值高于 5 或​​ 15 分钟平均值,则负载正在增加。
  • 如果 1 分钟平均值低于 5 或​​ 15 分钟平均值,则负载正在减少。
  • 如果它们高于您的 CPU 数量,那么您可能会遇到性能问题(具体取决于情况)。