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造成重大影响,使其平滑。