歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

AIX的CPU性能監視


CPU 性能監視
處理單元是系統中最快的組件之一。在某一時間對單個程序來說保持 100% 的 CPU 占用率(也就是說,空閒 0%,等待 0%)超過幾秒鐘是相對少見的。甚至在重負載的多用戶系統中,偶爾會出現一些 10 毫秒(ms)的時間段,在其結束時所有線程處於等待狀態。如果監視器長時間地顯示 CPU 占用率為 100%,則很有可能是某個程序陷入了死循環。即使程序“僅僅”是占用較多資源而不是崩潰了,也需要將它識別出來並進行處理。

r-->在運行隊列中等待的進程數
b-->在等待io的進程數
w-->可以進入運行隊列但被替換的進程
memoy
swap-->現時可用的交換內存(k表示)
free-->空閒的內存(k表示)
pages
re--》回收的頁面
mf--》非嚴重錯誤的頁面
pi--》進入頁面數(k表示)
po--》出頁面數(k表示)
fr--》空余的頁面數(k表示)
de--》提前讀入的頁面中的未命中數
sr--》通過時鐘算法掃描的頁面
disk 顯示每秒的磁盤操作。 s表示scsi盤,0表示盤號
fault 顯示每秒的中斷數
in--》設備中斷
sy--》系統中斷
cy--》cpu交換
cpu 表示cpu的使用狀態
cs--》用戶進程使用的時間
sy--》系統進程使用的時間
id--》cpu空閒的時間
如果 r經常大於 4 ,且id經常少於40,表示cpu的負荷很重。
如果pi,po 長期不等於0,表示內存不足。

  • sy 在某一時間間隔中觀測到的每秒系統調用次數。通過明確的系統調用,用戶進程可以使用資源。這些調用指示內核執行調用線程的操作,並在內核和該進程之間交換數據。因為工作負載和應用程序變化很大,不同的調用執行不同的功能,所以不可能定義每秒鐘有多少系統調用才算太多。但是通常來講,在一個單處理器系統上當 sy 列增大到超過每秒鐘 10000 個調用時,則要求進行進一步調查(在一個 SMP 系統上,這個數字為每個處理器每秒鐘 10000 個調用)。一個原因可能是“輪詢”子例程,像 select() 子例程。對這一列,建議進行一個基准評估,給出正常 sy 值的計數。
  • cs 在某一時間間隔中觀測到的每秒鐘上下文切換次數。物理 CPU 資源細分為每個 10 毫秒的邏輯時間片。假設一個線程被調度運行,它將一直運行直到它的時間片用完、直到被搶先或直到它自願放棄 CPU 控制權。當給予另一個線程 CPU 控制權時,必須保存前一個線程的上下文或工作環境,並且必須裝入當前線程的上下文。操作系統有一個很有效的上下文切換過程,所以每次切換並不耗費資源。任何上下文切換的顯著增加,如當 cs 比磁盤 I/O 和網絡信息包速率高得多,都應進行進一步調查。
    下面的示例顯示了 iostat 命令輸出的一部分。第一節顯示了自從系統啟動以來的統計信息摘要。
    sar 命令sar 命令收集關於系統的統計數據。盡管可以用它來收集一些關於系統性能的有用數據,但 sar 命令會增加系統負載,如果采樣頻率較高就會加劇預先存在的性能問題。但與記帳包相比,sar 命令的干擾更小。系統維護了一系列系統活動計數器,用來記錄各種活動並提供 sar 命令報告的數據。sar 命令不會導致這些計數器被更新或使用;不論 sar 命令是否運行這都會自動進行。根據指定給 sar 命令的采樣速率和采樣次數,它僅僅從這些計數器中提取數據並保存下來。
    通過它的許多選項,sar 命令提供了排隊、頁面調度、TTY 和許多其它的統計信息。sar 命令的一個重要功能是它會報告系統級(所有處理器的綜合)的 CPU 統計信息(對一些結果取平均值,以百分比表示,對其它求和),或者報告每個獨立處理器的統計信息。所以這個命令在 SMP 系統上特別有用。
    有三種情況可以使用 sar 命令:
    實時采樣和顯示要收集並立即顯示系統統計報告,使用下列命令:
    # sar -u 2 5AIX aixhost 2 5 00049FDF4C00 02/21/0418:11:12 %usr %sys %wio %idle 18:11:14 4 6 0 91 18:11:16 2 7 0 91 18:11:18 3 6 0 92 18:11:20 2 7 0 92 18:11:22 2 7 1 90 平均值 2 6 0 91這一示例來自於一個單用戶工作站,顯示了 CPU 使用率。
    顯示以前捕獲的數據-o 和 -f 選項(對用戶給定的數據文件中進行讀寫)允許您在兩個獨立步驟中將機器的行為可視化。在問題再現期間這些操作消耗很少的資源。通過傳送文件您可以使用單獨的一台機器來分析數據,因為收集的二進制文件保留了 sar 命令所需的所有數據。
    # sar -o /tmp/sar.out 2 5 > /dev/null上面的命令在後台運行 sar 命令,以兩秒的時間間隔收集 5 個區間的系統活動數據,並將(未格式化的)sar 數據存儲在 /tmp/sar.out 文件中。對標准輸出使用重定向可以避免屏幕輸出。
    下列命令從文件中提取 CPU 信息並將格式化的報告輸出到標准輸出中:
    # sar -f/tmp/sar.outAIX aixhost 2 5 00049FDF4C00 02/21/0418:10:18 %usr %sys %wio %idle18:10:20 9 2 0 8818:10:22 13 10 0 7618:10:24 37 4 0 5918:10:26 8 2 0 9018:10:28 20 3 0 77平均值 18 4 0 78捕獲的二進制數據文件中保留了報告所需的所有信息。因此可以調查每個可能的 sar 報告。這也允許在一個單處理器系統上顯示 SMP 系統的處理器特定的信息。
    通過守護程序 cron 的系統活動記帳sar 命令調用一個叫做 sadc 的進程來訪問系統數據。構造兩個 shell 腳本(/usr/lib/sa/sa1 和 /usr/lib/sa/sa2),用守護程序 cron 運行這兩個腳本,以提供每天的統計信息和報告。在 /var/spool/cron/crontabs/adm crontab 文件中包含了(但注釋掉了)樣本節,以指定守護程序 cron 應該何時運行 shell 腳本。
    下面幾行顯示了一個修改過的管理員用戶的 crontab。只除去了數據收集的注釋字符:
    #=================================================================# SYSTEM ACTIVITY REPORTS# 8am-5pm activity reports every 20 mins during weekdays.# activity reports every an hour on Saturday and Sunday.# 6pm-7am activity reports every an hour during weekdays.# Daily summary prepared at 18:05.#=================================================================0 8-17 * * 1-5 /usr/lib/sa/sa1 1200 3 &0 * * * 0,6 /usr/lib/sa/sa1 &0 18-7 * * 1-5 /usr/lib/sa/sa1 &5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 3600 -ubcwyaqvm &#=================================================================以這種方式收集數據有助於表征在一段時期中系統的使用情況並確定使用高峰時間。
    有用的 CPU 選項sar 命令中與 CPU 相關的最有用選項有:
    • sar -P -P 選項報告指定處理器的每處理器統計信息。通過指定 ALL 關鍵字,可以報告每個單獨的處理器統計信息和所有處理器的平均值。在指定要報告統計信息的標志中,只有 -a、-c、-m、-u 和 -w 這幾個標志與 -P 標志一起使用才有意義的。
      下面的示例顯示了當一個 CPU 受限程序在 0 號處理器上運行時的每處理器統計信息:
      # sar -P ALL 2 3AIX aixsmphost 2 5 00049FDF4D01 02/22/0417:30:50 cpu %usr %sys %wio %idle17:30:52 0 8 92 0 0 1 0 4 0 96 2 0 1 0 99 3 0 0 0 100 - 2 24 0 7417:30:54 0 12 88 0 0 1 0 3 0 97 2 0 1 0 99 3 0 0 0 100 - 3 23 0 7417:30:56 0 11 89 0 0 1 0 3 0 97 2 0 0 0 100 3 0 0 0 100 - 3 23 0 74平均值 0 10 90 0 0 1 0 4 0 96 2 0 1 0 99 3 0 0 0 100 - 3 24 0 74每節的最後一行在 cpu 一列中以一個短劃線(-)開始,是所有處理器的平均值。只有當使用 -P ALL 選項時才會顯示一個平均值(-)行。如果指定了處理器,這一行將被除去。最後一節標記了平均值而不是一個時間戳,保留了所有節中處理器特定行的平均值。
      下列示例顯示了此時 vmstat 的輸出:
      # vmstat 2 5kthr 內存 頁面 故障 cpu----- ----------- ------------------------ ------------ ------------ r b avm fre re pi po fr sr cy in sy cs us sy id wa 0 0 255636 16054 0 0 0 0 0 0 116 266 5 0 1 99 0 1 1 255733 15931 0 0 0 0 0 0 476 50781 35 2 27 70 0 1 1 255733 15930 0 0 0 0 0 0 476 49437 27 2 24 74 0 1 1 255733 15930 0 0 0 0 0 0 473 48923 31 3 23 74 0 1 1 255733 15930 0 0 0 0 0 0 466 49383 27 3 23 74 0第一個有編號的行是系統啟動以來的摘要。第二行反映了 sar 命令的啟動,這些報告可通過第三行進行比較。vmstat 命令只能顯示所有處理器的 CPU 平均利用率。這與 sar 命令的 CPU 利用率輸出中的虛線(-)行相當。
    • sar -u 該命令顯示了 CPU 利用率。如果不指定其它標志,這就是缺省標志。它顯示的信息與 vmstat 或 iostat 命令的 CPU 統計信息一樣。
      在下列示例中,啟動了一個復制命令:
    • sar -c -c 選項顯示了系統調用率。
      # sar -c 1 319:28:25 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s19:28:26 134 36 1 0.00 0.00 2691306 151719:28:27 46 34 1 0.00 0.00 2716922 153119:28:28 46 34 1 0.00 0.00 2716922 1531平均值 75 35 1 0.00 0.00 2708329 1527雖然 vmstat 命令也顯示系統調用率,如果這些系統調用是 read()、write()、fork()、exec() 和其它調用,sar 命令也可以顯示它們。請特別注意 fork/s 一列。如果它較高,則可能需要使用記帳實用程序(如 trace 命令或 tprof 命令)進行進一步調查。
    • sar -q -q 選項顯示了運行隊列長度和交換隊列長度。
      # sar -q 5 319:31:42 runq-sz %runocc swpq-sz %swpocc19:31:47 1.0 100 1.0 10019:31:52 2.0 100 1.0 10019:31:57 1.0 100 1.0 100平均值 1.3 95 1.0 95runq-sz 每秒鐘可運行的平均線程數和運行隊列被占用的時間百分比(% 字段容易出錯)。 swapq-sz VMM 等待隊列中的平均線程數和交換隊列被占用的時間百分比。(% 字段容易出錯。) -q 選項可以指出您系統中是否運行太多的作業(runq-sz),或有一個潛在的頁面調度瓶頸。在一個高度事務性的系統中,例如企業資源規劃(ERP),運行隊列可能有幾百個,因為每項事務只使用少量的 CPU 時間。如果頁面調度是問題所在,則運行 vmstat 命令。高的 I/O 等待表明存在嚴重的磁盤爭用活動,或由於內存不足而產生過多的頁面調度。
    xmperf 程序使用 xmperf 程序以變動的輪廓線圖顯示 CPU 使用情況。在 Performance Toolbox Version 2 and 3 for AIX: Guide and Reference 中對 xmperf 程序有詳細描述。
  • Copyright © Linux教程網 All Rights Reserved