VPS上的cpu load average

本文原创,转载请注明来源:http://www.1or9.com/post/227.html

我经常为这个问题困惑,所以研究了一段时间。

首先:cpu load average 不是cpu负载。那个数字表示的意思是:cpu任务队列的长度。以下讨论基于1个核,如果是N核,情况完全一样。只是放大N倍。

如果cpu load average 比1小,则说明:CPU队列里面没有任务排队,也就是CPU非常闲。问题是如果这个数字比1大,就说明负责太高,CPU承受不了吗?不是的!如果这个数字稳定在一个数值不持续变大,恰恰说明CPU可以承受这个负载。就像超市排队check out,如果顾客的队伍一直保持在5个人或者10个人而不持续增长,说明这个柜台的营业员还是能够来得及处理的。唯一的问题就是每个用户可能要花一点时间排队。那到底要排队多少时间呢?如果CPU平均处理一个任务的时间是1毫秒,如果队列是10,也就是说每个任务的处理时间从1毫秒变成11毫秒(10毫秒的等待时间+1毫秒的真正处理时间)。从用户角度来说,1毫秒和11毫秒是区别不出来的。但是如果我们假设CPU平均处理一个任务的时间是1秒,如果队列是10,也就是说每个任务的处理时间从1秒变成11秒(10秒的等待时间+1秒的真正处理时间)。从用户角度来说,1秒和11秒的区别是非常大的。

Continue reading “VPS上的cpu load average”