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

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

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

    以java平臺(tái)為基礎(chǔ),專注項(xiàng)目管理、關(guān)注電子商務(wù)
    攬住母親的肩頭,敬父親一杯酒,對(duì)愛的女人說“我愛你”,和另外一個(gè)男人打架,不要打女人,有一個(gè)自己的孩子,年輕的時(shí)候去漂泊,有自己的一份事業(yè).

    ???????CPU 的占用主要取決于什么樣的資源正在 CPU 上面運(yùn)行,比如拷貝一個(gè)文件通常占用較少 CPU,因?yàn)榇蟛糠止ぷ魇怯?DMA(Direct Memory Access)完成,只是在完成拷貝以后給一個(gè)中斷讓 CPU 知道拷貝已經(jīng)完成;科學(xué)計(jì)算通常占用較多的 CPU,大部分計(jì)算工作都需要在 CPU 上完成,內(nèi)存、硬盤等子系統(tǒng)只做暫時(shí)的數(shù)據(jù)存儲(chǔ)工作。要想監(jiān)測(cè)和理解 CPU 的性能需要知道一些的操作系統(tǒng)的基本知識(shí),比如:中斷、進(jìn)程調(diào)度、進(jìn)程上下文切換、可運(yùn)行隊(duì)列等。用個(gè)例子來簡單介紹一下這些概念和他們的關(guān)系,CPU 很無辜,是個(gè)任勞任怨的打工仔,每時(shí)每刻都有工作在做(進(jìn)程、線程)并且自己有一張工作清單(可運(yùn)行隊(duì)列),由老板(進(jìn)程調(diào)度)來決定他該干什么,他需要和老板溝通以便得到老板的想法并及時(shí)調(diào)整自己的工作(上下文切換),部分工作做完以后還需要及時(shí)向老板匯報(bào)(中斷),所以打工仔(CPU)除了做自己該做的工作以外,還有大量時(shí)間和精力花在溝通和匯報(bào)上。

    CPU 也是一種硬件資源,和任何其他硬件設(shè)備一樣也需要驅(qū)動(dòng)和管理程序才能使用,我們可以把內(nèi)核的進(jìn)程調(diào)度看作是 CPU 的管理程序,用來管理和分配 CPU 資源,合理安排進(jìn)程搶占 CPU,并決定哪個(gè)進(jìn)程該使用 CPU、哪個(gè)進(jìn)程該等待。操作系統(tǒng)內(nèi)核里的進(jìn)程調(diào)度主要用來調(diào)度兩類資源:進(jìn)程(或線程)和中斷,進(jìn)程調(diào)度給不同的資源分配了不同的優(yōu)先級(jí),優(yōu)先級(jí)最高的是硬件中斷,其次是內(nèi)核(系統(tǒng))進(jìn)程,最后是用戶進(jìn)程。每個(gè) CPU 都維護(hù)著一個(gè)可運(yùn)行隊(duì)列,用來存放那些可運(yùn)行的線程。線程要么在睡眠狀態(tài)(blocked 正在等待 IO)要么在可運(yùn)行狀態(tài),如果 CPU 當(dāng)前負(fù)載太高而新的請(qǐng)求不斷,就會(huì)出現(xiàn)進(jìn)程調(diào)度暫時(shí)應(yīng)付不過來的情況,這個(gè)時(shí)候就不得不把線程暫時(shí)放到可運(yùn)行隊(duì)列里。VPSee 在這里要討論的是性能監(jiān)測(cè),上面談了一堆都沒提到性能,那么這些概念和性能監(jiān)測(cè)有什么關(guān)系呢?關(guān)系重大。如果你是老板,你如何檢查打工仔的效率(性能)呢?我們一般會(huì)通過以下這些信息來判斷打工仔是否偷懶:

    • 打工仔接受和完成多少任務(wù)并向老板匯報(bào)了(中斷);
    • 打工仔和老板溝通、協(xié)商每項(xiàng)工作的工作進(jìn)度(上下文切換);
    • 打工仔的工作列表是不是都有排滿(可運(yùn)行隊(duì)列);
    • 打工仔工作效率如何,是不是在偷懶(CPU 利用率)。

    現(xiàn)在把打工仔換成 CPU,我們可以通過查看這些重要參數(shù):中斷、上下文切換、可運(yùn)行隊(duì)列、CPU 利用率來監(jiān)測(cè) CPU 的性能。

    底線

    上一篇 Linux 性能監(jiān)測(cè):介紹(一) 提到了性能監(jiān)測(cè)前需要知道底線,那么監(jiān)測(cè) CPU 性能的底線是什么呢?通常我們期望我們的系統(tǒng)能到達(dá)以下目標(biāo):

    • CPU 利用率,如果 CPU 有 100% 利用率,那么應(yīng)該到達(dá)這樣一個(gè)平衡:65%-70% User Time,30%-35% System Time,0%-5% Idle Time;
    • 上下文切換,上下文切換應(yīng)該和 CPU 利用率聯(lián)系起來看,如果能保持上面的 CPU 利用率平衡,大量的上下文切換是可以接受的;
    • 可運(yùn)行隊(duì)列,每個(gè)可運(yùn)行隊(duì)列不應(yīng)該有超過1-3個(gè)線程(每處理器),比如:雙處理器系統(tǒng)的可運(yùn)行隊(duì)列里不應(yīng)該超過6個(gè)線程。

    vmstat

    vmstat 是個(gè)查看系統(tǒng)整體性能的小工具,小巧、即使在很 heavy 的情況下也運(yùn)行良好,并且可以用時(shí)間間隔采集得到連續(xù)的性能數(shù)據(jù)。

    				$ vmstat 1
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     2  1    140 2787980 336304 3531996  0    0     0   128 1166 5033  3  3 70 25  0
     0  1    140 2788296 336304 3531996  0    0     0     0 1194 5605  3  3 69 25  0
     0  1    140 2788436 336304 3531996  0    0     0     0 1249 8036  5  4 67 25  0
     0  1    140 2782688 336304 3531996  0    0     0     0 1333 7792  6  6 64 25  0
     3  1    140 2779292 336304 3531992  0    0     0    28 1323 7087  4  5 67 25  0
    		

    參數(shù)介紹:

    • r,可運(yùn)行隊(duì)列的線程數(shù),這些線程都是可運(yùn)行狀態(tài),只不過 CPU 暫時(shí)不可用;
    • b,被 blocked 的進(jìn)程數(shù),正在等待 IO 請(qǐng)求;
    • in,被處理過的中斷數(shù)
    • cs,系統(tǒng)上正在做上下文切換的數(shù)目
    • us,用戶占用 CPU 的百分比
    • sys,內(nèi)核和中斷占用 CPU 的百分比
    • wa,所有可運(yùn)行的線程被 blocked 以后都在等待 IO,這時(shí)候 CPU 空閑的百分比
    • id,CPU 完全空閑的百分比

    舉兩個(gè)現(xiàn)實(shí)中的例子來實(shí)際分析一下:

    				$ vmstat 1
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     4  0    140 2915476 341288 3951700  0    0     0     0 1057  523 19 81  0  0  0
     4  0    140 2915724 341296 3951700  0    0     0     0 1048  546 19 81  0  0  0
     4  0    140 2915848 341296 3951700  0    0     0     0 1044  514 18 82  0  0  0
     4  0    140 2915848 341296 3951700  0    0     0    24 1044  564 20 80  0  0  0
     4  0    140 2915848 341296 3951700  0    0     0     0 1060  546 18 82  0  0  0
    		

    從上面的數(shù)據(jù)可以看出幾點(diǎn):

    1. interrupts(in)非常高,context switch(cs)比較低,說明這個(gè) CPU 一直在不停的請(qǐng)求資源;
    2. user time(us)一直保持在 80% 以上,而且上下文切換較低(cs),說明某個(gè)進(jìn)程可能一直霸占著 CPU;
    3. run queue(r)剛好在4個(gè)。
    				$ vmstat 1
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
    14  0    140 2904316 341912 3952308  0    0     0   460 1106 9593 36 64  1  0  0
    17  0    140 2903492 341912 3951780  0    0     0     0 1037 9614 35 65  1  0  0
    20  0    140 2902016 341912 3952000  0    0     0     0 1046 9739 35 64  1  0  0
    17  0    140 2903904 341912 3951888  0    0     0    76 1044 9879 37 63  0  0  0
    16  0    140 2904580 341912 3952108  0    0     0     0 1055 9808 34 65  1  0  0
    		

    從上面的數(shù)據(jù)可以看出幾點(diǎn):

    1. context switch(cs)比 interrupts(in)要高得多,說明內(nèi)核不得不來回切換進(jìn)程;
    2. 進(jìn)一步觀察發(fā)現(xiàn) system time(sy)很高而 user time(us)很低,而且加上高頻度的上下文切換(cs),說明正在運(yùn)行的應(yīng)用程序調(diào)用了大量的系統(tǒng)調(diào)用(system call);
    3. run queue(r)在14個(gè)線程以上,按照這個(gè)測(cè)試機(jī)器的硬件配置(四核),應(yīng)該保持在12個(gè)以內(nèi)。

    mpstat

    mpstat 和 vmstat 類似,不同的是 mpstat 可以輸出多個(gè)處理器的數(shù)據(jù),下面的輸出顯示 CPU1 和 CPU2 基本上沒有派上用場(chǎng),系統(tǒng)有足夠的能力處理更多的任務(wù)。

    				$ mpstat -P ALL 1
    Linux 2.6.18-164.el5 (vpsee) 	11/13/2009
    
    02:24:33 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
    02:24:34 PM  all    5.26    0.00    4.01   25.06    0.00    0.00    0.00   65.66   1446.00
    02:24:34 PM    0    7.00    0.00    8.00    0.00    0.00    0.00    0.00   85.00   1001.00
    02:24:34 PM    1   13.00    0.00    8.00    0.00    0.00    0.00    0.00   79.00    444.00
    02:24:34 PM    2    0.00    0.00    0.00  100.00    0.00    0.00    0.00    0.00      0.00
    02:24:34 PM    3    0.99    0.00    0.99    0.00    0.00    0.00    0.00   98.02      0.00
    		

    ps

    如何查看某個(gè)程序、進(jìn)程占用了多少 CPU 資源呢?下面是 Firefox 在一臺(tái)服務(wù)器的 運(yùn)行情況,當(dāng)前只有2個(gè)用戶在使用 Firefox:

    				$ while :; do ps -eo pid,ni,pri,pcpu,psr,comm | grep 'firefox'; sleep 1; done
    
      PID  NI PRI %CPU PSR COMMAND
     7252   0  24  3.2   3 firefox
     9846   0  24  8.8   0 firefox
     7252   0  24  3.2   2 firefox
     9846   0  24  8.8   0 firefox
     7252   0  24  3.2   2 firefox
    		
    posted on 2010-10-26 10:19 cssseek 閱讀(2217) 評(píng)論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     

    <2010年10月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    友情鏈接

    最新隨筆

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 免费视频爱爱太爽了| 国产偷国产偷亚洲清高动态图| 国产免费一区二区三区VR| 亚洲一区二区三区乱码A| 7777久久亚洲中文字幕蜜桃| 久久这里只精品国产免费10| 亚洲精品国产品国语在线| 99精品视频免费| 韩国欧洲一级毛片免费| 国产亚洲精品AAAA片APP | 国产V亚洲V天堂无码| 最近国语视频在线观看免费播放| 毛片免费观看的视频在线| 亚洲色大成网站www永久网站| 十八禁在线观看视频播放免费| 女人被弄到高潮的免费视频 | 亚洲AV无码国产丝袜在线观看| 久久水蜜桃亚洲AV无码精品| 免费真实播放国产乱子伦| 精品国产污污免费网站入口在线| 四虎AV永久在线精品免费观看| 亚洲成a人片77777群色| 成人激情免费视频| 一级做a爰性色毛片免费| 天天摸夜夜摸成人免费视频| 美女又黄又免费的视频| 国产A在亚洲线播放| 最近最新的免费中文字幕| 美女视频黄频a免费大全视频| 好吊妞在线成人免费| 亚欧国产一级在线免费| 亚洲精品国产手机| 国产jizzjizz免费看jizz| 在线成人精品国产区免费| 亚洲一区二区无码偷拍| 57PAO成人国产永久免费视频| 久久精品国产亚洲AV高清热| 野花香在线视频免费观看大全| 亚洲男人av香蕉爽爽爽爽| 日本一区二区在线免费观看| 亚洲精品一卡2卡3卡三卡四卡|