AIX文檔——vmstat 命令

vmstat 命令

第一個要使用的工具是 vmstat 命令,該命令可迅速提供關於各種系統資源和與之相關的性能問題的簡要信息。

vmstat 命令報告關於內核線程的統計信息,包括處於運行和等待隊列中的、內存中的、頁面調度中的、磁盤中的、中斷、系統調用、上下文切換和 CPU 活動的內核線程。所報告的 CPU 活動是用戶方式、系統方式、空閒時間和等待磁盤 I/O 的百分比細目分類。
注: 如果使用 vmstat 命令時不帶任何選項,或者只帶有時間間隔和(可選)計數參數,例如 vmstat 2 10,那麼第一行數字爲自系統重新引導以來的平均值。
作爲一個 CPU 監視器,vmstat 命令優於 iostat 命令,因爲 vmstat 命令是滾動的,使得它的每報告一行的輸出更容易掃描,並且如果有很多磁盤連接到系統中,由此所涉及的開銷更少。下面的示例可以幫助您識別一個程序失控時或 CPU 過度密集以至於不能在一個多用戶環境中運行時的情況。
# vmstat 2
kthr     memory             page              faults        cpu
----- ----------- ------------------------ ------------ -----------
  r  b  avm    fre     re  pi  po  fr   sr  cy  in   sy    cs  us sy  id wa
  1  0 22478  1677   0   0   0   0    0   0 188 1380 157 57 32  0 10
  1  0 22506  1609   0   0   0   0    0   0 214 1476 186 48 37  0 16
  0  0 22498  1582   0   0   0   0    0   0 248 1470 226 55 36  0  9

  2  0 22534  1465   0   0   0   0    0   0 238  903 239 77 23  0  0
  2  0 22534  1445   0   0   0   0    0   0 209 1142 205 72 28  0  0
  2  0 22534  1426   0   0   0   0    0   0 189 1220 212 74 26  0  0
  3  0 22534  1410   0   0   0   0    0   0 255 1704 268 70 30  0  0
  2  1 22557  1365   0   0   0   0    0   0 383  977 216 72 28  0  0

  2  0 22541  1356   0   0   0   0    0   0 237 1418 209 63 33  0  4
  1  0 22524  1350   0   0   0   0    0   0 241 1348 179 52 32  0 16
  1  0 22546  1293   0   0   0   0    0   0 217 1473 180 51 35  0 14 

此輸出顯示了在一個死循環中將程序引入到一個繁忙的多用戶系統中所帶來的效果。頭三個報告(已刪除摘要)表明系統平衡在 50-55% 的用戶、30-35% 的系統和 10-15% 的 I/O 等待處。當循環程序開始運行,所有可用的 CPU 週期都被耗用。因爲循環程序不進行 I/O,所以它可以佔有前面因爲 I/O 等待而未用過的所有周期。更糟的是,這代表當一個有用進程放棄 CPU 時,始終有一個進程準備接管 CPU。因爲循環程序的優先級與所有其他前臺進程一樣,所以當另一個進程變得可分派時它也沒必要一定得放棄 CPU。該程序運行大約 10 秒鐘(五個報告),然後由 vmstat 命令報告的活動恢復到較正常的模式。

最佳利用是讓 CPU 在 100% 的時間中工作。這適用於單用戶系統的情況,不需要共享 CPU。總的來說,如果 us + sy 時間低於 90%,則不認爲單用戶系統是 CPU 受限制的。但是,如果在一個多用戶系統中 us + sy 時間超過 80%,則進程可能要花時間在運行隊列中等待。響應時間和吞吐量會受損害。

要檢查 CPU 是否是瓶頸,考慮 vmstat 報告中的四個 cpu 列和兩個 kthr(內核線程)列。查看故障列也是值得的:

  • cpu

    在該時間間隔內使用 CPU 時間的百分比細分。cpu 列如下:

    • us

      us 列顯示了用戶方式下所花費 CPU 時間的百分比。UNIX® 進程可在用戶方式下執行,也可在系統(內核)方式下執行。當在用戶方式下時,進程在它自己的應用程序代碼中執行,不需要內核資源來進行計算、管理內存或設置變量。

    • sy

      sy 列詳述了 CPU 在系統方式下執行一個進程所花時間的百分比。這包括內核進程(kproc)和其他需要訪問內核資源的進程所消耗的 CPU 資源。如果一個進程需要內核資源,它必須執行一個系統調用,並由此切換到系統方式從而使該資源可用。例如,對一個文件的讀或寫操作需要內核資源來打開文件、尋找特定的位置,以及讀或寫數據,除非使用內存映射文件。

    • id

      id 列顯示了沒有暫掛本地磁盤 I/O 時,CPU 空閒或等待的時間百分比。如果沒有線程可供執行(運行隊列爲空),則系統將分派一個稱爲 wait 的線程(又稱爲空閒 kproc)。在一個 SMP 系統中,每個處理器都有一個wait 線程可分派。由 ps 命令(帶有 -k 或 -g 0 選項)生成的報告將其標識爲 kproc 或 wait。如果 ps 報告顯示這個線程的總計時間較高,這表明存在重要的時間段,其中沒有其他線程準備在 CPU 上運行或等待執行。系統因此大部分時間空閒等待新任務。

    • wa

      wa 列詳細顯示了暫掛本地磁盤 I/O 和 NFS 加載磁盤的 CPU 空閒時間百分比。如果在 wait 運行時至少有一個未完成的磁盤 I/O,該時間就歸爲 I/O 等待時間。除非進程使用異常 I/O,否則對磁盤的 I/O 請求會導致調用的進程阻塞(或睡眠),直到請求完成爲止。一旦進程的 I/O 請求完成,該進程就放入運行隊列中。如果 I/O 很快完成,該進程可以使用更多的 CPU 時間。

      超過 25% 的 wa 的值可以表示磁盤子系統可能沒有被正確平衡,或者這也可能是磁盤密集工作負載的結果。

       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章