转载原文:https://blog.51cto.com/u_14440843/3009804

对于CPU负载的理解

  1. 系统load高不一定是性能问题
  2. 系统load高不一定是CPU能力问题或者数量不够
  3. 系统长期load高,不应该一味的增加CPU

在load average高的情况下,需要鉴别系统瓶颈是CPU不足还是IO不够快还是内存不足导致的

CPU负载和CPU利用率的区别

  1. load average:系统平均负载(平均活跃进程数)是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息,这个数字越小越好。

  2. CPU使用率:显示的是程序在运行期间实时占用的CPU百分比。

  3. CPU负载:显示的是一段时间内正在使用和等待使用CPU的平均任务数。CPU使用率高,并不意味着负载就一定大。 举例来说:如果我有一个程序它需要一直使用CPU的运算功能,那么此时CPU的使用率可能达到100%,但是CPU的工作负载则是趋近于”1”,因为CPU仅负责一个工作啊。 如果同时执行这样的程序两个呢?CPU的使用率还是100%,但是工作负载则变成2了。所以也就是说,当CPU的工作负载越大,代表CPU必须要在不同的工作之间进行频繁 的工作切换。

  4. CPU利用率高,并不意味着负载就一定大。 举例来说: 如果有一个程序它需要一直使用CPU的运算功能,那么此时CPU的使用率可能达到100%,但是CPU的工作负载则是趋近于”1”,因为CPU仅负责一个工作! 如果同时执行这样的程序两个呢?CPU的使用率还是100%,但是工作负载则变成2了。所以也就是说,当CPU的工作负载越大,代表CPU必须要在不同的工作之间 进行频繁的工作切换。

load average

load average表示的是系统的平均负荷,即CPU的Load。 它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。 它包括3个数字,分别表示系统在1、5、15分钟内进程队列中的平均进程数量(即处理的进程情况), 原则上来说这3个数字越小越好,数字越小表示服务器的工作量越小,系统负荷比较轻。

当CPU完全空闲的时候,平均负荷为0(即load average的值为0);
当CPU工作量饱和的时候,平均负荷为1。
比如一台服务器有4个逻辑CPU,如果load average的三个值长期大于4时,说明CPU很繁忙,负载很高,可能会影响系统性能。

  1. 关于load average三个平均值的参考:

主要观察”15分钟系统负荷”,将它作为服务器正常运行的指标。