Linux/Unix中的load average原来一点也不简单

我的工作内容是守机器,于是比较闲,有时间就折腾些自己感兴趣的东西。经常需要用top查看系统性能,对于输出结果中右上角的那几个数据到底是什么含义,一直没有去了解。昨天心血来潮,于是四处查找load average到底是什么。
google了一番,发现一篇讲load average的文章,看来load average真的不简单!


load average是什么?
  • 通过top命令可以查看系统的load average,它显示的是系统在1分钟,5分钟,15分钟之内的load情况。
  • 通 俗的说,load是指run-queue length (i.e., the sum of the number ofprocesses waiting in the run-queue plus the number currentlyexecuting).
  • 专业一点说,A exponentially-damped time-dependent average
load average怎么计算?
这其中涉及到不少数学知识,发了我一个晚上才了解个大概。唉,数学差啊
  • 为 了使内核可以高效计算load average,采用了fixed-point arithmetic。fixed-point arithmetic是一种非常快速的模拟浮点运算的方法,特别是在没有FPU(float point unit)部件的处理器上,非常有用。
  • 计算公式:load(t) = load(t-1) e^(-5/60) + n (1 - e^(-5/60)),迭代计算,其中n为run-queue length。
  • 为什么采用这个计算公式呢?
    • 由Exponential Smoothing方程有,Y(t)= Y(t-1) + a*[X(t) - Y(t-1)],whereX(t) is the input raw data, Y(t - 1) is the value due to the previoussmoothing iteration and Y(t) is the new smoothed value.这个公式就当作公理吧,不要问我为什么,我也不知道。
    • 令a=1-b,b为e^(-5/60),就可以得到load average的计算公式
    • 采用此公式的好处:局部的load抖动不会对load average造成重大影响,使其平滑。
 

你可能感兴趣的:(Linux/Unix中的load average原来一点也不简单)