十五年测试老手,长期负责WEB\APP 项目测试,目前主要负责团队管理工作。

Linux的load average的含义

上一篇 / 下一篇  2009-06-04 13:43:08 / 个人分类:性能指标相关

$ uptime
5n^a(K5x~/f011:12:26 up 3:44, 4 users, load average: 0.38, 0.31, 0.19
\U [%||E0上面的输出,load average后面分别是1分钟、5分钟、15分钟的负载情况。数据是每隔5秒钟检查一次活跃的进程数,然后根据这个数值算出来的。如果这个数除以CPU的数目,结果高于5的时候就表明系统在超负荷运转了。其算法(摘自Linux 2.4的内核代码)如下:51Testing软件测试网a8?H8Zh_4z#R
51Testing软件测试网 |nS@!x;B0h
文件: include/linux/sched.h:51Testing软件测试网)RH0@z%t#Y#^J{9W

C wW%UV tV0#define FSHIFT 11 /* nr of bits of precision */
)c{l/n4[W_.d0#define FIXED_1 (1<51Testing软件测试网~$h~2v$G(|&PN
#define LOAD_FREQ (5*HZ) /* 5 sec intervals */
2M0P"Jh)E-G8V8aB0#define EXP_1 1884 /* 1/exp(5sec/1min) as fixed-point, 2048/pow(exp(1), 5.0/60) */51Testing软件测试网]GE7j!Ri]g%F _
#define EXP_5 2014 /* 1/exp(5sec/5min), 2048/pow(exp(1), 5.0/300) */
Hcn;Rii'X%?f7`0#define EXP_15 2037 /* 1/exp(5sec/15min), 2048/pow(exp(1), 5.0/900) */51Testing软件测试网 `` CdZ
51Testing软件测试网tU8fB{,Ux5jt
#define CALC_LOAD(load,exp,n) \51Testing软件测试网7T$mtrP,C
load *= exp; \51Testing软件测试网IB,UVI1XV?ZK
load += n*(FIXED_1-exp); \
4x(B-^f*|oc+q0load >>= FSHIFT;51Testing软件测试网K,{4n0]Sgh[!O

ieQ+j"Cn.d_/g0/**********************************************************/
|3N*dM;t`+Gn0
q8pjpl?#x0文件: kernel/timer.c:51Testing软件测试网1S\N:S-@;o*b8K
unsigned long avenrun[3];51Testing软件测试网 Y;aa@qA(F

5cxNXv0static inline void calc_load(unsigned long ticks)
Zw7aM7sM2_`0{
;?Q:{ N"q p0unsigned long active_tasks; /* fixed-point */51Testing软件测试网7b%xt }1uBg'mh
static int count = LOAD_FREQ;51Testing软件测试网YW"L+FR

oWM)Pg1ZC0count -= ticks;51Testing软件测试网 |"D7nf+@(~*Z2J0Kr
if (count < 0) {51Testing软件测试网;FY0e'IF)@I2y
count += LOAD_FREQ;51Testing软件测试网-^,x zr3h
active_tasks = count_active_tasks();
(I,D+N4Pqf0CALC_LOAD(avenrun[0], EXP_1, active_tasks);
+Y7c}.T,S1L:T5Q0CALC_LOAD(avenrun[1], EXP_5, active_tasks);
V#MjB&]4A G,HM0CALC_LOAD(avenrun[2], EXP_15, active_tasks);
*v{ r _8zM3W0}
q!l'zENg0}51Testing软件测试网Lb6Q/XU9ct

;rw!p"j:~4X0/**********************************************************/51Testing软件测试网0qF_eyH^~ ^3j

h.P#Kp e*{7X.n)e7\p6L0文件: fs/proc/proc_misc.c:
nJPb&wA`4L.Bq0C0
m m} Y3B3fhJ~0#define LOAD_INT(x) ((x) >> FSHIFT)
vM2Y%K SL;R"X0#define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1-1)) * 100)51Testing软件测试网)~6~_2h$NSM8n
51Testing软件测试网$icv$M-hK
static int loadavg_read_proc(char *page, char **start, off_t off,51Testing软件测试网yg+kI`"`n
int count, int *eof, void *data)
0?PGw2O?+L0{51Testing软件测试网D,yI+c4_
int a, b, c;
R-U1l0oJ _QPG0int len;51Testing软件测试网3c7`}2i/l/F,I
51Testing软件测试网D#\1o J;iCh
a = avenrun[0] + (FIXED_1/200);
wy4n;wX+scc0b = avenrun[1] + (FIXED_1/200);51Testing软件测试网1nFx7kO fJ
c = avenrun[2] + (FIXED_1/200);
$T}s4M%a6o4C3Y0len = sprintf(page,"%d.%02d %d.%02d %d.%02d %ld/%d %d\n",
%WEo$n+?OQ0LOAD_INT(a), LOAD_FRAC(a),51Testing软件测试网QI4\c$t B
LOAD_INT(b), LOAD_FRAC(b),51Testing软件测试网)p w2zo O'L
LOAD_INT(c), LOAD_FRAC(c),
$uc,hx8c2L%pT0nr_running(), nr_threads, last_pid);
tmML KO[y"[0return proc_calc_metrics(page, start, off, count, eof, len);51Testing软件测试网4k{|!K zT;U6m
}

TAG: load average

 

评分:0

我来说两句

Open Toolbar