关于 load average

很多人都知道uptime命令会得到如下的返回:
12:00:59 up 20:24,  1 user,  load average: 0.49, 1.40, 1.61

其中的load average根的3个数字,分别表示系统在1分钟,5分钟和15分钟的平均负载情况。这个数字是系统每5秒钟会自动检测一下活跃的进程数量(即top命令看到的n running),然后得出结果。具体感兴趣的话可以研究下Linux内核中include/linux/sched.h, kernel/timer.c,fs/proc/proc_misc.c

所谓活跃的进程,需要满足:

  • 没有被终止或者正在调用wait。
  • 不是正在等待I/O操作。

很多网上说这个数字除上CPU的数量如果得到的结果大于5就说明系统在超负荷运转。对于这个结论本人持保留意见。

  1. 对于双核或者多核的CPU,如果按照1个CPU来计算,那么明显的状况就是对于多核心的不公。如果按照多个CPU来计算,那又是对于多路CPU,甚至是独享内存总线多CPU的不公。对于基于HT技术的“假多核”更是如此。
  2. 对于不同平台的CPU而言,目前公认的是X86架构“不耐压”,特别在于高并发的情况下。本人明显觉得SPARC的架构相比X86在压缩同一个文件的时间更长;但是同时进行多个压缩的时候Sparc的平台占有绝对优势。
  3. 与IO关系不够紧密,很多情况下,最容易制约系统的是IO,特别是现在正处在“运算不值钱,储存值钱”的时代。
  4. 超负荷的界定:有的系统,在1.5的情况下已经能够感到明显的延时;同样有的系统在10以上还能迅速响应。
anyShare分享到:
          

, ,

  1. No comments yet.
(will not be published)
*