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

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

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

    以java平臺為基礎,專注項目管理、關注電子商務
    攬住母親的肩頭,敬父親一杯酒,對愛的女人說“我愛你”,和另外一個男人打架,不要打女人,有一個自己的孩子,年輕的時候去漂泊,有自己的一份事業.

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

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

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

    現在把打工仔換成 CPU,我們可以通過查看這些重要參數:中斷、上下文切換、可運行隊列、CPU 利用率來監測 CPU 的性能。

    底線

    上一篇 Linux 性能監測:介紹(一) 提到了性能監測前需要知道底線,那么監測 CPU 性能的底線是什么呢?通常我們期望我們的系統能到達以下目標:

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

    vmstat

    vmstat 是個查看系統整體性能的小工具,小巧、即使在很 heavy 的情況下也運行良好,并且可以用時間間隔采集得到連續的性能數據。

    				$ 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
    		

    參數介紹:

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

    舉兩個現實中的例子來實際分析一下:

    				$ 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
    		

    從上面的數據可以看出幾點:

    1. interrupts(in)非常高,context switch(cs)比較低,說明這個 CPU 一直在不停的請求資源;
    2. user time(us)一直保持在 80% 以上,而且上下文切換較低(cs),說明某個進程可能一直霸占著 CPU;
    3. run queue(r)剛好在4個。
    				$ 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
    		

    從上面的數據可以看出幾點:

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

    mpstat

    mpstat 和 vmstat 類似,不同的是 mpstat 可以輸出多個處理器的數據,下面的輸出顯示 CPU1 和 CPU2 基本上沒有派上用場,系統有足夠的能力處理更多的任務。

    				$ 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

    如何查看某個程序、進程占用了多少 CPU 資源呢?下面是 Firefox 在一臺服務器的 運行情況,當前只有2個用戶在使用 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) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

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

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    友情鏈接

    最新隨筆

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费永久看黄在线观看app| 毛色毛片免费观看| 亚洲一区二区三区在线观看精品中文| 亚洲va中文字幕| 日韩视频在线免费| 国产成人亚洲精品播放器下载| 日韩免费福利视频| 牛牛在线精品观看免费正 | 亚洲午夜无码AV毛片久久| 亚洲人成网站在线在线观看| 好男人看视频免费2019中文 | 成全视成人免费观看在线看| 国产成人高清亚洲| 最近中文字幕免费大全| 亚洲国产精品人久久| 国产曰批免费视频播放免费s | 国产成人久久精品亚洲小说| 免费一看一级毛片| 国产成人无码区免费内射一片色欲| 亚洲av激情无码专区在线播放| 69影院毛片免费观看视频在线| 2020国产精品亚洲综合网| 又粗又大又长又爽免费视频| 一区二区免费国产在线观看| 日韩一卡2卡3卡4卡新区亚洲| 在线观看免费无码专区| 亚洲欧洲日本精品| 国产zzjjzzjj视频全免费 | 亚洲人成色7777在线观看| 久久精品一本到99热免费| 亚洲视频在线观看2018| 免费午夜爽爽爽WWW视频十八禁| 成在线人视频免费视频| 91亚洲自偷在线观看国产馆| 国产免费观看a大片的网站| 99久久免费国产特黄| 亚洲福利一区二区精品秒拍| 全部免费国产潢色一级| 99精品视频免费观看| 国产成人亚洲综合在线| 亚洲国产人成网站在线电影动漫|