1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 网络负载率计算公式 linux 如何理解Linux CPU负载率的计算方式

网络负载率计算公式 linux 如何理解Linux CPU负载率的计算方式

时间:2019-11-23 10:48:33

相关推荐

网络负载率计算公式 linux 如何理解Linux CPU负载率的计算方式

Load

average的概念源自UNIX系统,虽然各家的公式不尽相同,但都是用于衡量正在使用CPU的进行数量和正在等待CPU的进程数量,一句话就是runable

processes的数量。所以Load average可以作为CPU瓶颈的参考指标,如果大于CPU的数量,说明CPU可能不够用了。

但是,在Linux上有点差异!

Linux上的load average除了包括正在使用CPU的进程数量和正在等待CPU的进程数量之外,还包括uninterruptible

sleep的进程数量。通常等待IO设备、等待网络的时候,进程会处于uninterruptible

sleep状态。Linux设计者的逻辑是,uninterruptible

sleep应该都是很短暂的,很快就会恢复运行,所以被等同于runnable。然而uninterruptible

sleep即使再短暂也是sleep,何况现实世界中uninterruptible sleep未必很短暂,大量的、或长时间的uninterruptible

sleep通常意味着IO设备遇到了瓶颈。众所周知,sleep状态的进程是不需要CPU的,即使所有的CPU都空闲,正在sleep的进程也是运行不了的,所以sleep进程的数量绝对不适合用作衡量CPU负载的指标,Linux把uninterruptible

sleep进程算进load average的做法直接颠覆了load average的本来意义。所以在Linux系统上,load

average这个指标基本失去了作用,因为你不知道它代表什么意思,当看到load

average很高的时候,你不知道是runnable进程太多还是uninterruptible

sleep进程太多,也就无法判断是CPU不够用还是IO设备有瓶颈。

从另一个方面来说,也就可以解释为什么磁盘慢时(大量磁盘使用时),CPU负载会飙高了。基本上我碰到CPU负载高的情况就两种情况:CPU本身处理太多任务,再加上软中断和上下文切换太频繁导致负载高;再就是磁盘太慢导致了不可中断睡眠太多导致CPU负载高。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。