我是一个Linux新手,所以我试图找出差异。 问题是,与“ps aux”命令的输出相比,/ proc / loadavg中的1分钟平均负载没有意义。 例如,有时1分钟的平均负载达到15+。 考虑到我的VPS有6个内核,这是一个巨大的负担。 然而,“ps aux”几乎没有显示任何负载 – 所有进程的CPU占总数的百分之几。
我究竟做错了什么? 这是由于“ps”表示正在运行的进程,而高一分钟的平均值可能是由于一个不再运行的进程所引起的,这种差异呢? 如果是这样的话,我怎样才能看到过去一分钟内运行的所有进程的列表?
linux中的加载值不是直接对应于cpu使用的值。 CPU使用率是通过给定时间内CPU空闲多less时间来计算的。 负载是关于等待IO处理的进程的指示,例如磁盘读取,networking活动。 (我不知道天气这是进程的数量,回答一个IO请求的时间或只是一个计算的数字进行比较)
所以高负载,低CPU使用率通常意味着一些进程正在运行,不需要太多的处理能力,但很大程度上依赖于一些IO繁重的任务
要理解的关键是CPU使用率和负载平均度量两个不同的东西。
CPU的使用比较容易掌握,因为CPU 不是空闲的 ,“空闲”标志着内核空闲循环(执行一个HALT指令或类似的指令)。
如手册页中所述的加载平均度量,
运行队列(状态R)或等待磁盘I / O(状态D)的作业的数量平均在1,5和15分钟之间换句话说,负载平均值是多less进程的平均值运行队列等待执行(R)或I / O完成(D)。
有时候,高CPU利用率可能与高负载平均值有关(反之亦然)。 其他时间这两个值是完全不相关的:例如,等待networkingI / O的许多进程可以增加您的平均负载,而基本上不使用CPU时间。