<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java技術(shù)研究

    統(tǒng)計(jì)

    留言簿(3)

    閱讀排行榜

    評(píng)論排行榜

    Linux-Load Average解析(轉(zhuǎn))

    load Average

       1.1:什么是Load?什么是Load Average?
       Load 就是對(duì)計(jì)算機(jī)干活多少的度量(WikiPedia:the system Load is a measure of the amount of work that a compute system is doing)
       簡(jiǎn)單的說(shuō)是進(jìn)程隊(duì)列的長(zhǎng)度。Load Average 就是一段時(shí)間(1分鐘、5分鐘、15分鐘)內(nèi)平均Load。【參考文章:unix Load Average Part1:How It Works】

       1.2:查看指令:
       w or uptime or procinfo or top

       
       load average: 0.02,   0.27,    0.17
       1 per/minute 5 per/minute 15 per/minute


    1.3:如何判斷系統(tǒng)是否已經(jīng)Over Load?
    對(duì)一般的系統(tǒng)來(lái)說(shuō),根據(jù)cpu數(shù)量去判斷。如果平均負(fù)載始終在1.2一下,而你有2顆cup的機(jī)器。那么基本不會(huì)出現(xiàn)cpu不夠用的情況。也就是Load平均要小于Cpu的數(shù)量
    1.4:Load與容量規(guī)劃(Capacity Planning)
           一般是會(huì)根據(jù)15分鐘那個(gè)load 平均值為首先。

    1.5:Load誤解:
    1:系統(tǒng)load高一定是性能有問(wèn)題。
        真相:Load高也許是因?yàn)樵谶M(jìn)行cpu密集型的計(jì)算
            2:系統(tǒng)Load高一定是CPU能力問(wèn)題或數(shù)量不夠。
        真相:Load高只是代表需要運(yùn)行的隊(duì)列累計(jì)過(guò)多了。但隊(duì)列中的任務(wù)實(shí)際可能是耗Cpu的,也可能是耗i/0奶子其他因素的。
    3:系統(tǒng)長(zhǎng)期Load高,首先增加CPU
        真相:Load只是表象,不是實(shí)質(zhì)。增加CPU個(gè)別情況下會(huì)臨時(shí)看到Load下降,但治標(biāo)不治本。

    2:在Load average 高的情況下如何鑒別系統(tǒng)瓶頸。
       是CPU不足,還是io不夠快造成或是內(nèi)存不足?

       2.1:查看系統(tǒng)負(fù)載vmstat
    Vmstat
    procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
    r b swpd free buff cache si so bi bo in cs us sy id wa
    0 0 100152 2436 97200 289740 0 1 34 45 99 33 0 0 99 0

    procs
    r 列表示運(yùn)行和等待cpu時(shí)間片的進(jìn)程數(shù),如果長(zhǎng)期大于1,說(shuō)明cpu不足,需要增加cpu。
    b 列表示在等待資源的進(jìn)程數(shù),比如正在等待I/O、或者內(nèi)存交換等。
    cpu 表示cpu的使用狀態(tài)
    us 列顯示了用戶(hù)方式下所花費(fèi) CPU 時(shí)間的百分比。us的值比較高時(shí),說(shuō)明用戶(hù)進(jìn)程消耗的cpu時(shí)間多,但是如果長(zhǎng)期大于50%,需要考慮優(yōu)化用戶(hù)的程序。
    sy 列顯示了內(nèi)核進(jìn)程所花費(fèi)的cpu時(shí)間的百分比。這里us + sy的參考值為80%,如果us+sy 大于 80%說(shuō)明可能存在CPU不足。
    wa 列顯示了IO等待所占用的CPU時(shí)間的百分比。這里wa的參考值為30%,如果wa超過(guò)30%,說(shuō)明IO等待嚴(yán)重,這可能是磁盤(pán)大量隨機(jī)訪問(wèn)造成的,也可能磁盤(pán)或者磁盤(pán)訪問(wèn)控制器的帶寬瓶頸造成的(主要是塊操作)。
    id 列顯示了cpu處在空閑狀態(tài)的時(shí)間百分比
    system 顯示采集間隔內(nèi)發(fā)生的中斷數(shù)
    in 列表示在某一時(shí)間間隔中觀測(cè)到的每秒設(shè)備中斷數(shù)。
    cs列表示每秒產(chǎn)生的上下文切換次數(shù),如當(dāng) cs 比磁盤(pán) I/O 和網(wǎng)絡(luò)信息包速率高得多,都應(yīng)進(jìn)行進(jìn)一步調(diào)查。
    memory
    swpd 切換到內(nèi)存交換區(qū)的內(nèi)存數(shù)量(k表示)。如果swpd的值不為0,或者比較大,比如超過(guò)了100m,只要si、so的值長(zhǎng)期為0,系統(tǒng)性能還是正常
    free 當(dāng)前的空閑頁(yè)面列表中內(nèi)存數(shù)量(k表示)
    buff 作為buffer cache的內(nèi)存數(shù)量,一般對(duì)塊設(shè)備的讀寫(xiě)才需要緩沖。
    cache: 作為page cache的內(nèi)存數(shù)量,一般作為文件系統(tǒng)的cache,如果cache較大,說(shuō)明用到cache的文件較多,如果此時(shí)IO中bi比較小,說(shuō)明文件系統(tǒng)效率比較好。
    swap
    si 由內(nèi)存進(jìn)入內(nèi)存交換區(qū)數(shù)量。
    so由內(nèi)存交換區(qū)進(jìn)入內(nèi)存數(shù)量。
    IO
    bi 從塊設(shè)備讀入數(shù)據(jù)的總量(讀磁盤(pán))(每秒kb)。
    bo 塊設(shè)備寫(xiě)入數(shù)據(jù)的總量(寫(xiě)磁盤(pán))(每秒kb)
    這里我們?cè)O(shè)置的bi+bo參考值為1000,如果超過(guò)1000,而且wa值較大應(yīng)該考慮均衡磁盤(pán)負(fù)載,可以結(jié)合iostat輸出來(lái)分析。

       2.2:查看磁盤(pán)負(fù)載iostat
    每隔2秒統(tǒng)計(jì)一次磁盤(pán)IO信息,直到按Ctrl+C終止程序,-d 選項(xiàng)表示統(tǒng)計(jì)磁盤(pán)信息, -k 表示以每秒KB的形式顯示,-t 要求打印出時(shí)間信息,2 表示每隔 2 秒輸出一次。第一次輸出的磁盤(pán)IO負(fù)載狀況提供了關(guān)于自從系統(tǒng)啟動(dòng)以來(lái)的統(tǒng)計(jì)信息。隨后的每一次輸出則是每個(gè)間隔之間的平均IO負(fù)載狀況。

    # iostat -x 1 10
    Linux 2.6.18-92.el5xen 02/03/2009
    avg-cpu:   %user %nice %system %iowait   %steal %idle
                1.10 0.00 4.82 39.54 0.07 54.46
    Device:       rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await   svctm   %util
       sda             0.00     3.50   0.40   2.50     5.60 48.00 18.48     0.00 0.97 0.97 0.28
       sdb             0.00     0.00   0.00   0.00     0.00     0.00     0.00     0.00 0.00 0.00 0.00
       sdc             0.00     0.00   0.00   0.00     0.00     0.00     0.00     0.00 0.00 0.00 0.00
       sdd             0.00     0.00   0.00   0.00     0.00     0.00     0.00     0.00 0.00 0.00 0.00
       sde             0.00     0.10   0.30   0.20     2.40     2.40     9.60     0.00 1.60 1.60 0.08
       sdf              17.40     0.50 102.00   0.20 12095.20     5.60 118.40     0.70 6.81 2.09   21.36
       sdg          232.40     1.90 379.70   0.50 76451.20 19.20 201.13     4.94 13.78 2.45   93.16
       rrqm/s: 每秒進(jìn)行 merge 的讀操作數(shù)目。即 delta(rmerge)/s
       wrqm/s:   每秒進(jìn)行 merge 的寫(xiě)操作數(shù)目。即 delta(wmerge)/s
       r/s:           每秒完成的讀 I/O 設(shè)備次數(shù)。即 delta(rio)/s
       w/s:       每秒完成的寫(xiě) I/O 設(shè)備次數(shù)。即 delta(wio)/s
       rsec/s: 每秒讀扇區(qū)數(shù)。即 delta(rsect)/s
       wsec/s: 每秒寫(xiě)扇區(qū)數(shù)。即 delta(wsect)/s
       rkB/s:   每秒讀K字節(jié)數(shù)。是 rsect/s 的一半,因?yàn)槊可葏^(qū)大小為512字節(jié)。(需要計(jì)算)
       wkB/s: 每秒寫(xiě)K字節(jié)數(shù)。是 wsect/s 的一半。(需要計(jì)算)
       avgrq-sz: 平均每次設(shè)備I/O操作的數(shù)據(jù)大小 (扇區(qū))。delta(rsect+wsect)/delta(rio+wio)
       avgqu-sz: 平均I/O隊(duì)列長(zhǎng)度。即 delta(aveq)/s/1000 (因?yàn)閍veq的單位為毫秒)。
       await: 平均每次設(shè)備I/O操作的等待時(shí)間 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
       svctm: 平均每次設(shè)備I/O操作的服務(wù)時(shí)間 (毫秒)。即 delta(use)/delta(rio+wio)
       %util:    一秒中有百分之多少的時(shí)間用于 I/O 操作,或者說(shuō)一秒中有多少時(shí)間 I/O 隊(duì)列是非空的。即 delta(use)/s/1000 (因?yàn)閡se的單位為毫秒)
      
       如果 %util 接近 100%,說(shuō)明產(chǎn)生的I/O請(qǐng)求太多,I/O系統(tǒng)已經(jīng)滿(mǎn)負(fù)荷,該磁盤(pán)
       可能存在瓶頸。
       idle小于70% IO壓力就較大了,一般讀取速度有較多的wait.
      
       同時(shí)可以結(jié)合vmstat 查看查看b參數(shù)(等待資源的進(jìn)程數(shù))和wa參數(shù)(IO等待所占用的CPU時(shí)間的百分比,高過(guò)30%時(shí)IO壓力高)
      
       另外還可以參考
       一般:
       svctm < await (因?yàn)橥瑫r(shí)等待的請(qǐng)求的等待時(shí)間被重復(fù)計(jì)算了),
       svctm的大小一般和磁盤(pán)性能有關(guān):CPU/內(nèi)存的負(fù)荷也會(huì)對(duì)其有影響,請(qǐng)求過(guò)多也會(huì)間接導(dǎo)致 svctm 的增加。
       await: await的大小一般取決于服務(wù)時(shí)間(svctm) 以及 I/O 隊(duì)列的長(zhǎng)度和 I/O 請(qǐng)求的發(fā)出模式。
       如果 svctm 比較接近 await,說(shuō)明I/O 幾乎沒(méi)有等待時(shí)間;
       如果 await 遠(yuǎn)大于 svctm,說(shuō)明 I/O隊(duì)列太長(zhǎng),應(yīng)用得到的響應(yīng)時(shí)間變慢,
       如果響應(yīng)時(shí)間超過(guò)了用戶(hù)可以容許的范圍,這時(shí)可以考慮更換更快的磁盤(pán),調(diào)整內(nèi)核 elevator算法,優(yōu)化應(yīng)用,或者升級(jí) CPU。
       隊(duì)列長(zhǎng)度(avgqu-sz)也可作為衡量系統(tǒng) I/O 負(fù)荷的指標(biāo),但由于 avgqu-sz 是按照單位時(shí)間的平均值,所以不能反映瞬間的 I/O 洪水。
      
         別人一個(gè)不錯(cuò)的例子.(I/O 系統(tǒng) vs. 超市排隊(duì))
       舉一個(gè)例子,我們?cè)诔信抨?duì) checkout 時(shí),怎么決定該去哪個(gè)交款臺(tái)呢? 首當(dāng)是看排的隊(duì)人數(shù),5個(gè)人總比20人要快吧?除了數(shù)人頭,我們也常常看看前面人購(gòu)買(mǎi)的東西多少,如果前面有個(gè)采購(gòu)了一星期食品的大媽?zhuān)敲纯梢钥紤]換個(gè)隊(duì)排了。還有就是收銀員的速度了,如果碰上了連錢(qián)都點(diǎn)不清楚的新手,那就有的等了。另外,時(shí)機(jī)也很重要,可能 5分鐘前還人滿(mǎn)為患的收款臺(tái),現(xiàn)在已是人去樓空,這時(shí)候交款可是很爽啊,當(dāng)然,前提是那過(guò)去的 5 分鐘里所做的事情比排隊(duì)要有意義(不過(guò)我還沒(méi)發(fā)現(xiàn)什么事情比排隊(duì)還無(wú)聊的)。
       I/O 系統(tǒng)也和超市排隊(duì)有很多類(lèi)似之處:
       r/s+w/s 類(lèi)似于交款人的總數(shù)
       平均隊(duì)列長(zhǎng)度(avgqu-sz)類(lèi)似于單位時(shí)間里平均排隊(duì)人的個(gè)數(shù)
       平均服務(wù)時(shí)間(svctm)類(lèi)似于收銀員的收款速度
       平均等待時(shí)間(await)類(lèi)似于平均每人的等待時(shí)間
       平均I/O數(shù)據(jù)(avgrq-sz)類(lèi)似于平均每人所買(mǎi)的東西多少
       I/O 操作率 (%util)類(lèi)似于收款臺(tái)前有人排隊(duì)的時(shí)間比例。
       我們可以根據(jù)這些數(shù)據(jù)分析出 I/O 請(qǐng)求的模式,以及 I/O 的速度和響應(yīng)時(shí)間。
       下面是別人寫(xiě)的這個(gè)參數(shù)輸出的分析
       # iostat -x 1
       avg-cpu:   %user %nice %sys %idle
       16.24 0.00 4.31 79.44
       Device: rrqm/s wrqm/s r/s w/s   rsec/s   wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await   svctm   %util
       /dev/cciss/c0d0
       0.00   44.90   1.02 27.55 8.16   579.59     4.08 289.80 20.57 22.35 78.21 5.00   14.29
       /dev/cciss/c0d0p1
       0.00   44.90   1.02 27.55 8.16   579.59     4.08 289.80 20.57 22.35 78.21 5.00   14.29
       /dev/cciss/c0d0p2
       0.00 0.00   0.00   0.00 0.00 0.00     0.00     0.00     0.00     0.00 0.00 0.00 0.00
       上面的 iostat 輸出表明秒有 28.57 次設(shè)備 I/O 操作: 總IO(io)/s = r/s(讀) +w/s(寫(xiě)) = 1.02+27.55 = 28.57 (次/秒) 其中寫(xiě)操作占了主體 (w:r = 27:1)。
       平均每次設(shè)備 I/O 操作只需要 5ms 就可以完成,但每個(gè) I/O 請(qǐng)求卻需要等上 78ms,為什么? 因?yàn)榘l(fā)出的 I/O 請(qǐng)求太多 (每秒鐘約 29 個(gè)),假設(shè)這些請(qǐng)求是同時(shí)發(fā)出的,那么平均等待時(shí)間可以這樣計(jì)算:
       平均等待時(shí)間 = 單個(gè) I/O 服務(wù)時(shí)間 * ( 1 + 2 + ... + 請(qǐng)求總數(shù)-1) / 請(qǐng)求總數(shù)
       應(yīng)用到上面的例子: 平均等待時(shí)間 = 5ms * (1+2+...+28)/29 = 70ms,和 iostat 給出的78ms 的平均等待時(shí)間很接近。這反過(guò)來(lái)表明 I/O 是同時(shí)發(fā)起的。
       每秒發(fā)出的 I/O 請(qǐng)求很多 (約 29 個(gè)),平均隊(duì)列卻不長(zhǎng) (只有 2 個(gè) 左右),這表明這 29 個(gè)請(qǐng)求的到來(lái)并不均勻,大部分時(shí)間 I/O 是空閑的。
       一秒中有 14.29% 的時(shí)間 I/O 隊(duì)列中是有請(qǐng)求的,也就是說(shuō),85.71% 的時(shí)間里 I/O 系統(tǒng)無(wú)事可做,所有 29 個(gè) I/O 請(qǐng)求都在142毫秒之內(nèi)處理掉了。
       delta(ruse+wuse)/delta(io) = await = 78.21 => delta(ruse+wuse)/s=78.21 * delta(io)/s = 78.21*28.57 =2232.8,表明每秒內(nèi)的I/O請(qǐng)求總共需要等待2232.8ms。所以平均隊(duì)列長(zhǎng)度應(yīng)為 2232.8ms/1000ms = 2.23,而iostat 給出的平均隊(duì)列長(zhǎng)度 (avgqu-sz) 卻為 22.35,為什么?! 因?yàn)?iostat 中有 bug,avgqu-sz值應(yīng)為 2.23,而不是 22.35。

    posted on 2013-04-17 09:20 小秦 閱讀(1518) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲一区二区三区电影| 亚洲欧美日韩中文字幕在线一区| 99re6在线视频精品免费下载| 亚洲综合久久1区2区3区| 成人免费看片又大又黄| 一级女性全黄生活片免费看| 青青草原精品国产亚洲av| 免费高清在线爱做视频| 污网站免费在线观看| 综合自拍亚洲综合图不卡区| 在线精品免费视频| 你是我的城池营垒免费看| 精品久久亚洲中文无码| 国产黄色一级毛片亚洲黄片大全| 亚洲免费一级视频| 精品在线观看免费| 亚洲黄色在线电影| 亚洲第一福利网站在线观看| 95老司机免费福利| 一个人看的www免费高清| 亚洲av无码片区一区二区三区| 亚洲国产V高清在线观看| 精品国产免费人成电影在线观看| 美女被爆羞羞网站免费| 亚洲乱码卡一卡二卡三| 亚洲人精品午夜射精日韩| 国产精品视频永久免费播放| 精品国产一区二区三区免费| 久久亚洲精品高潮综合色a片| 亚洲人成网站在线播放影院在线| 免费国内精品久久久久影院| 2021国产精品成人免费视频| 在线观看免费无码视频| 老司机午夜性生免费福利| 亚洲不卡中文字幕| 亚洲国产精品无码久久久秋霞2| 国产午夜鲁丝片AV无码免费| 久久久久久久免费视频| 久久久久久AV无码免费网站下载| 二区久久国产乱子伦免费精品| 亚洲av纯肉无码精品动漫|