Linux load average 辨析

讀取系統(tǒng) load average

uptime 或者 top 可以顯示系統(tǒng)的 load average. 比如:

[root@localhost ~]# uptime
 15:54:04 up 106 days,  6:35,  7 users,  load average: 1.45, 1.76, 2.02

三個(gè)數(shù)字分別表示1,5,15分鐘的數(shù)據(jù)崖堤。

load average 中的 load

load average 顯示的并不是cpu 使用百分比馋缅。這也許是最容易產(chǎn)生的誤解磅网。這個(gè)誤解有兩方面的問題:

  1. load average 并非指 cpu load average 而是 system load average绳匀。遠(yuǎn)古時(shí)代(1993年之前)的確是指cpu load粒竖,也就是統(tǒng)計(jì)系統(tǒng)中處于 runnable 的線程照捡。后來uninterruptible 的線程被計(jì)入統(tǒng)計(jì)叮贩,為了同時(shí)體現(xiàn) I/O 或者 lock 的 wait 情況击狮,此種情況系統(tǒng)并沒有真正的 idle。此后這個(gè)指標(biāo)的名字就由 cpu load average 改成了 system load average益老。
  2. 并非百分比彪蓬,而是所有非 idle 線程的總數(shù)。需要提醒的是該數(shù)字并沒有對(duì)系統(tǒng)核數(shù)做歸一化捺萌,如果系統(tǒng)中有48個(gè)核而你看到的 load average 是20档冬,那么系統(tǒng)基本是比較輕松的。也許當(dāng)數(shù)值突破50之后才會(huì)感到壓力山大,當(dāng)然 it depends酷誓。

load average 中的 average

這個(gè) average 并不是真的 average披坏,而是采用一種指數(shù)阻尼的算法。Linux 引入了一些 magic number 簡化計(jì)算盐数。直接上代碼:

// include/linux/sched/loadavg.h

#define FSHIFT          11              /* nr of bits of precision */
#define FIXED_1         (1<<FSHIFT)     /* 1.0 as fixed-point */
/* 每5秒采樣一次 */
#define LOAD_FREQ       (5*HZ+1)        /* 5 sec intervals */
#define EXP_1           1884            /* 1/exp(5sec/1min) as fixed-point */
#define EXP_5           2014            /* 1/exp(5sec/5min) */
#define EXP_15          2037            /* 1/exp(5sec/15min) */

/* n 表示 active task 的數(shù)量棒拂,也就是非 idle 線程的數(shù)量 */
#define CALC_LOAD(load,exp,n) \
        load *= exp; \
        load += n*(FIXED_1-exp); \
        load >>= FSHIFT;

extern void calc_global_load(unsigned long ticks);
// kernel/sched/loadavg.c

/*
 * calc_load - update the avenrun load estimates 10 ticks after the
 * CPUs have updated calc_load_tasks.
 *
 * Called from the global timer code.
 */
void calc_global_load(unsigned long ticks)
{
        unsigned long sample_window;
        long active, delta;

        sample_window = READ_ONCE(calc_load_update);
        if (time_before(jiffies, sample_window + 10))
                return;

        /*
         * Fold the 'old' NO_HZ-delta to include all NO_HZ cpus.
         */
        delta = calc_load_nohz_fold();
        if (delta)
                atomic_long_add(delta, &calc_load_tasks);

        active = atomic_long_read(&calc_load_tasks);
        active = active > 0 ? active * FIXED_1 : 0;

        avenrun[0] = calc_load(avenrun[0], EXP_1, active);
        avenrun[1] = calc_load(avenrun[1], EXP_5, active);
        avenrun[2] = calc_load(avenrun[2], EXP_15, active);

        WRITE_ONCE(calc_load_update, sample_window + LOAD_FREQ);

        /*
         * In case we went to NO_HZ for multiple LOAD_FREQ intervals
         * catch up in bulk.
         */
        calc_global_nohz();
}

直觀的講,如果之前系統(tǒng)一直處于 idle 狀態(tài)娘扩,在單核系統(tǒng)下增加一個(gè)100% load 的線程着茸,一分鐘之后的 load average (1min) 為 0.62 而不是線性 average 的結(jié)果 1。


Load average experiment to visualize exponential damping

參考

http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末琐旁,一起剝皮案震驚了整個(gè)濱河市涮阔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灰殴,老刑警劉巖敬特,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異牺陶,居然都是意外死亡伟阔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門掰伸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來皱炉,“玉大人,你說我怎么就攤上這事狮鸭『辖粒” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵歧蕉,是天一觀的道長灾部。 經(jīng)常有香客問我,道長惯退,這世上最難降的妖魔是什么赌髓? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮催跪,結(jié)果婚禮上锁蠕,老公的妹妹穿的比我還像新娘。我一直安慰自己叠荠,他們只是感情好匿沛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著榛鼎,像睡著了一般逃呼。 火紅的嫁衣襯著肌膚如雪鳖孤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天抡笼,我揣著相機(jī)與錄音苏揣,去河邊找鬼。 笑死推姻,一個(gè)胖子當(dāng)著我的面吹牛平匈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播藏古,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼增炭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拧晕?” 一聲冷哼從身側(cè)響起隙姿,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎厂捞,沒想到半個(gè)月后输玷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡靡馁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年欲鹏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臭墨。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赔嚎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胧弛,到底是詐尸還是另有隱情尽狠,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布叶圃,位于F島的核電站,受9級(jí)特大地震影響践图,放射性物質(zhì)發(fā)生泄漏掺冠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一码党、第九天 我趴在偏房一處隱蔽的房頂上張望德崭。 院中可真熱鬧,春花似錦揖盘、人聲如沸眉厨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽憾股。三九已至鹿蜀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間服球,已是汗流浹背茴恰。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斩熊,地道東北人往枣。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像粉渠,于是被迫代替她去往敵國和親分冈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 定義 在Linux霸株,以及其他類Unix的系統(tǒng)中雕沉,常用該系統(tǒng)正在進(jìn)行的運(yùn)算工作來衡量該系統(tǒng)的系統(tǒng)負(fù)荷(System ...
    鑄劍陶鈞閱讀 7,471評(píng)論 0 1
  • 本文翻譯自 linux-load-averages,按照譯者理解有刪減 前言 經(jīng)常和Linux打交道的童鞋都知道淳衙,...
    大蟒傳奇閱讀 3,206評(píng)論 0 8
  • 這篇文章主要介紹一些常用的linux服務(wù)器性能監(jiān)控命令蘑秽,包括命令的常用參數(shù)、指標(biāo)的含義以及一些交互操作箫攀。 幾個(gè)問題...
    dancingking閱讀 8,346評(píng)論 6 22
  • 我時(shí)常有這樣一種感覺靴跛,你有嗎缀雳? 總覺得,小時(shí)候吃的零食比現(xiàn)在好吃梢睛; 總覺得肥印,小時(shí)候玩的玩具比現(xiàn)在有意思; 總覺得绝葡,...
    珂珂愛讀書愛生活閱讀 435評(píng)論 1 1
  • 價(jià)值增值過程 參考答案 勞動(dòng)力的價(jià)值和勞動(dòng)力在勞動(dòng)過程中創(chuàng)造的價(jià)值是兩個(gè)不同的量深碱,資本家購買勞動(dòng)力時(shí),正是看中了這...
    考研記錄本閱讀 401評(píng)論 0 0