常見的監控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