天天看點

監控CPU(二)

常見的監控CPU的工具基本的就是top mpstat sar vmstat(上下文切換/CPU數目是否夠)。再有就是去看/proc/裡邊的檔案資訊了,因為裡邊記錄系統運作時刻的東西,牛叉的就是nmon AIX的監控工具。

sar使用請參照:http://www.chinaz.com/server/2013/0401/297942.shtml

top

<code>top - </code><code>10</code><code>:</code><code>30</code><code>:</code><code>11</code> <code>up </code><code>46</code> <code>min,  </code><code>3</code> <code>users,  load average: </code><code>0.10</code><code>, </code><code>1.00</code><code>, </code><code>1.00</code>

<code>Tasks:</code><code>122</code> <code>total, </code><code>1</code> <code>running,</code><code>120</code> <code>sleeping,</code><code>0</code> <code>stopped,</code><code>1</code> <code>zombie</code>

<code>Cpus:</code><code>0.7</code><code>%us,</code><code>0.7</code><code>%sy,</code><code>0.0</code><code>%ni,</code><code>97.6</code><code>%id,</code><code>0.0</code><code>%wa,</code><code>0.7</code><code>%hi,</code><code>0.3</code><code>%si,</code><code>0.0</code><code>%st </code>

<code>Mem:1035244k total,537528k used,497716k free,25816k buffers</code>

<code>Swap:0k total,0k used,0k free,351392k cached</code>

<code>  </code><code>PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                       </code>

<code>  </code><code>489 root      20   0     0    0    0 S  0.3  0.0   0:03.88 vmmemctl                      </code>

<code> </code><code>1385 root      20   0 12780 3596 2748 S  0.3  0.3   0:00.22 sshd                          </code>

<code> </code><code>1423 root      20   0  2568 1088  876 R  0.3  0.1   0:00.01 top</code>

輸出資訊     說明

<code>10</code><code>:</code><code>30</code><code>:</code><code>11</code>     <code>目前時間</code>

<code>up </code><code>46</code> <code>min     系統運作時間</code>

<code>3</code> <code>users     目前登入使用者數,這裡是jzhou和root</code>

<code>load average:</code><code>0.10</code><code>, </code><code>1.00</code><code>, </code><code>1.00</code>     <code>系統負載,即任務隊列的平均長度。三個數值分别為</code><code>1</code><code>分鐘、</code><code>5</code><code>分鐘、</code><code>15</code><code>分鐘前到現在的平均值,即</code><code>0.02</code><code>,</code><code>0.14</code><code>,</code><code>0.21</code>

<code>Tasks:</code><code>122</code> <code>total, </code><code>1</code> <code>running,</code><code>120</code> <code>sleeping,</code><code>0</code> <code>stopped,</code><code>1</code> <code>zombie     </code><code>122</code><code>個程序(任務),其中有</code><code>2</code><code>個處于運作狀态,</code><code>120</code><code>個處于睡眠狀态,沒有停止的程序,有</code><code>1</code><code>個僵屍程序</code>

<code>Cpus:</code><code>0.7</code><code>%us,</code><code>0.7</code><code>%sy,</code><code>0.0</code><code>%ni,</code><code>97.6</code><code>%id,</code><code>0.0</code><code>%wa,</code><code>0.7</code><code>%hi,</code><code>0.3</code><code>%si,</code><code>0.0</code><code>%st     Cpu運作狀态,使用者程序(user)占用CPU的</code><code>0.7</code><code>%,系統程序(system)占用CPU的</code><code>0.7</code><code>%,使用者程序沒有改變過優先級的程序,是以user nice值為</code><code>0.0</code><code>%,</code><code>97.6</code><code>%的CPU處于空閑狀态(idle),沒有等待的輸入輸出,是以iowait的值也為</code><code>0.0</code><code>%,硬體請求終端時間(hardware interrupt)占CPU的</code><code>0.7</code><code>%,軟終端請求時間占CPU的</code><code>0.3</code><code>%,st代表steal time,具體作用不是很清楚,網上說是為其它CPU預留的,不清楚</code>

<code>Mem:1035244k total,537528k used,497716k free,25816k buffers     記憶體總量為1035244k,已使用的記憶體總量為537528k,497716k為空閑記憶體總量,25816k用作核心緩存的記憶體總量。(這是虛拟機的情況,實體機好像還有其它參數)</code>

<code>Swap:0k total,0k used,0k free,351392k cached     交換分區總量為0k,使用的交換分區總量為0k,空閑交換分區總量為0k,351392k為緩沖的交換區總量(cached)、記憶體中的内容被患處到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆寫,該數值即為這些内容已存在于記憶體中的交換區的大小。相應的記憶體再次被換出時可不必再對交換區寫入。</code>

然後看看詳細資訊部分輸出的資訊的内容:

<code>PID     程序辨別符</code>

<code>USER     程序所有者使用者名</code>

<code>PR/PRI     程序執行的優先級</code>

<code>NI     NICE值,負值表示高優先級,正值表示低優先級</code>

<code>VIRT     程序使用的虛拟記憶體總量,機關kb。VIRT=SWAP+RES</code>

<code>RES     程序使用的、未被換出的實體記憶體大小,機關kb。RES=CODE+DATA</code>

<code>SHR     共享記憶體大小,機關kb</code>

<code>S/STAT     程序狀态</code>

<code>                </code><code>D:不可中斷的睡眠狀态</code>

<code>                </code><code>R:正在運作,或在隊列中的程序</code>

<code>                </code><code>S:處于休眠狀态</code>

<code>                </code><code>T:停止或被追蹤</code>

<code>                </code><code>Z:僵屍程序</code>

<code>                </code><code>W:進入記憶體交換</code>

<code>                </code><code>X:死掉的程序</code>

<code>%CPU     上次更新到現在的CPU時間占用百分比</code>

<code>%MEN     程序使用的實體記憶體百分比</code>

<code>TIME+     程序使用的CPU時間總計,機關</code><code>1</code><code>/100s</code>

<code>COMMAND     程序被執行的指令名稱</code>

系統平均負載loadavg輸出可以了解為每秒鐘CPU等待運作的程序個數

系統平均負載被定義為在特定時間間隔内運作隊列中的平均任務數。如果一個程序滿足以下條件則其就會位于運作隊列中:

- 它沒有在等待I/O操作的結果

- 它沒有主動進入等待狀态(也就是沒有調用'wait')

- 沒有被停止(例如:等待終止)

例如:

# uptime

20:55:40 up 24 days,  3:06,  1 user,  load average: 8.13, 5.90, 4.94

sysstat的安裝包是:sysstat-5.0.5-1.i386.rpm,裝完了sysstat-5.0.5-1.i386.rpm

後 就會有iostat、mpstat、sar、sa的功能,sysstat-5.0.5-1.i386.rpm

使用yum,如何安裝iostat

sysstat 使用yum安裝

<code>#yum install sysstat</code>

啟動sysstat

<code>#/etc/init.d/sysstat start</code>

設定sysstat自啟動

<code>#checkfig sysstat on</code>

MPSTAT

MPSTAT -P ALL 2 3

[root@localhost proc]# mpstat  -P ALL

Linux 2.6.32-431.el6.i686 (localhost.localdomain)       08/12/2016      _i686_  (1 CPU)

10:39:57 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle

10:39:57 AM  all    0.15    0.00    0.42    0.43    0.03    0.12    0.00    0.00   98.84

10:39:57 AM    0    0.15    0.00    0.42    0.43    0.03    0.12    0.00    0.00   98.84

[root@localhost proc]# 

mpstat 是Multiprocessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計資訊,這些資訊存放在/proc/stat檔案中。在多CPUs系統裡,其不 但能檢視所有CPU的平均狀況資訊,而且能夠檢視特定CPU的資訊。下面隻介紹 mpstat與CPU相關的參數,mpstat的文法如下:

mpstat [-P {|ALL}] [internal [count]]

參數的含義如下:

參數 解釋

<code>mpstat -V  顯示mpstat版本資訊</code>

<code>mpstat -P ALL 顯示所有CPU資訊</code>

<code>mpstat -P n 顯示第n個cup資訊,n為數字,計數從</code><code>0</code><code>開始 </code>

<code>mpstat n m  每個n秒顯示一次cpu資訊,連續顯示m次,最後顯示一個平均值</code>

<code>mpstat n    每個n秒顯示一次cpu資訊,連續顯示下去</code>

<code>-P {|ALL} 表示監控哪個CPU, cpu在[</code><code>0</code><code>,cpu個數-</code><code>1</code><code>]中取值</code>

<code>internal 相鄰的兩次采樣的間隔時間</code>

<code>count 采樣的次數,count隻能和delay一起使用</code>

當沒有參數時,mpstat則顯示系統啟動以後所有資訊的平均值。有interval時,第 一行的資訊自系統啟動以來的平均資訊。從第二行開始,輸出為前一個interval時間段的平均資訊。與CPU有關的輸出的含義如下:

參數 解釋 從/proc/stat獲得資料

CPU 處理器ID

<code>user 在internal時間段裡,使用者态的CPU時間(%) ,不包含 nice值為負 程序 ?usr/?total*</code><code>100</code>

<code>nice 在internal時間段裡,nice值為負程序的CPU時間(%) ?nice/?total*</code><code>100</code>

<code>system 在internal時間段裡,核心時間(%) ?system/?total*</code><code>100</code>

<code>iowait 在internal時間段裡,硬碟IO等待時間(%) ?iowait/?total*</code><code>100</code>

<code>irq 在internal時間段裡,軟中斷時間(%) ?irq/?total*</code><code>100</code>

<code>soft 在internal時間段裡,軟中斷時間(%) ?softirq/?total*</code><code>100</code>

<code>idle 在internal時間段裡,CPU除去等待磁盤IO操作外的因為任何原因而空閑的時間閑置時間 (%) ?idle/?total*</code><code>100</code>

<code>intr/s 在internal時間段裡,每秒CPU接收的中斷的次數 ?intr/?total*</code><code>100</code>

本文轉自 aklaus 51CTO部落格,原文連結:http://blog.51cto.com/aklaus/1839695