基本信息
語法
iostat [ -s ] [ -a ] [ -d | -t ] [ -T ][ -m ][ PhysicalVolume ... ] [ Interval [ Count ] ]
描述
iostat 命令用來監視系統輸入/輸出設備負載,這通過觀察與它們的平均傳送速率相關的物理磁碟的活動時間來實現。iostat 命令生成的報告可以用來更改系統配置來更好地平衡物理磁碟和適配器之間的輸入/輸出負載。
由 iostat 命令生成的第一份報告提供了關於自從系統被引導後的時間統計信息。後繼的每一份報告都包含自上一次報告以來的時間。每次運行 iostat 命令時,就報告所有的統計信息。報告由緊接著一行 tty 和 CPU 統計信息的 tty 和 CPU 頭行組成。在多處理器系統上,CPU 統計信息是系統範圍計算的,是所有處理器的平均值。
如果指定 -s 標誌,則顯示系統頭行,隨後是一行整個系統的統計信息。系統的主機名被列印在系統頭上。
如果指定 -a 標誌,就會顯示一個適配器頭行,隨後是一行適配器的統計信息。這後面將回有一個磁碟頭行和連線到適配器的所有磁碟/CD-ROM 的統計信息。為所有與系統連線的磁碟適配器生成這種報告。
顯示一個磁碟頭行,隨後是一行配置的磁碟的統計信息。如果指定 PhysicalVolume 參數,則只顯示那些指定的名稱。
如果指定 PhysicalVolume 參數,那么可以指定一個或者更多的字母或者字母數字的物理卷。如果指定 PhysicalVolume 參數,就會顯示 tty 和 CPU 報告並且磁碟報告包含指定驅動器的統計信息。如果沒有發現指定邏輯驅動器名,那么報告將列出指定的名稱並且顯示沒有找到驅動器的訊息。如果沒有指定邏輯驅動器名,報告則包含所有已配置的磁碟和 CD-ROM 的統計信息。如果系統上沒有配置驅動器,則不生成磁碟報告。PhysicalVolume 參數中的第一個字元不能為數字型。
Interval 參數指定了在每個報告之間的以秒計算的時間量。第一份報告包含了自系統啟動(引導)以來的時間統計信息。每一份後繼報告都包含在和前一份報告的時間間隔之間收集的統計信息。Count 參數可被指定來連線 Interval 參數。如果指定了 Count 參數,它的記數值就確定在 Interval 秒間生成的報告數。如果指定了 Interval 參數但沒有 Count 參數,iostat 命令就會不斷生成報告。
iostat 命令用來確定一個物理卷是否正在形成一個性能瓶頸,以及是否有可能改善這種情況。物理卷的 % 使用率欄位表明了檔案活動在驅動器中分布多均勻。物理卷的高 % 使用率是表明也許存在這個資源的爭用很好的徵兆。由於 CPU 使用率的統計信息同樣適用於 iostat 報告,CPU 在 I/O 等待佇列中的時間的百分比可以在同一時間確定。如果 I/O 等待時間是有效數字並且磁碟使用率不是在卷上均勻分布,那么就要考慮在驅動器上分布數據。
註: 一些系統資源被消耗是為了為 iostat 命令維護磁碟 I/O 的歷史記錄。使用sysconfig子例程,或者系統管理接口工具(SMIT)來停止歷史記錄賬戶。報告iostat 命令生成四種類型的報告,tty 和 CPU 使用率報告、磁碟使用率報告、系統吞吐量報告和適配器吞吐量報告。
tty 和 CPU 使用率報告由 iostat 命令生成的第一份報告是 tty 和 CPU 使用率報告。對於多處理器系統,CPU 值是所有處理器的總平均。同時,I/O 等待狀態是系統級定義的,而不是每個處理器。報告有以下格式:
欄 | 描述 |
tin | 顯示了系統為所有 tty 讀取的字元總數。 |
tout | 顯示了系統為所有 tty 寫入的字元總數。 |
% user | 顯示了在用戶級(應用程式)執行時產生的 CPU 使用率百分比。 |
% sys | 顯示了在系統級(核心)執行時產生的 CPU 使用率百分比。 |
% idle | 顯示了在 CPU 空閒並且系統沒有未完成的磁碟 I/O 請求時的時間百分比。 |
% iowait | 顯示了 CPU 空閒期間系統有未完成的磁碟 I/O 請求時的時間百分比。 |
每過一定時間間隔,核心就更新這條信息(一般每秒六十次)。tty 報告提供了從系統中所有終端的收到的每秒字元總數,以及和每秒輸出到系統所有終端的字元的總數。
用來計算 CPU 磁碟 I/O 等待時間的方法作業系統 V4.3.3 和後來的版本包含用來估算 CPU 在磁碟 I/O(wio 時間)等待上的所花時間的百分比的增強方法。用在 AIX 4.3.2 和作業系統的早期版本上的方法在一定條件下,能夠給出 SMP 上的 wio 時間的一個放大的視圖。wio 時間是根據命令 sar(%wio)、 vmstat(wa)和 iostat(% iowait)報告出來的。
在 AIX 4.3.2 中和早期版本中使用的方法如下:在每個處理器(每處理器一秒一百次)的每個時鐘中斷上,將確定四個類別(usr/sys/wio/idle)中的哪一個放 置在最後的 10ms 內。如果在時鐘中斷的時刻 CPU 以 usr 模式中處於忙狀態,那么 usr 獲得這個時間計點並歸於此類。如果在時鐘中斷時刻 CPU 以核心模式中處於忙狀態,那么 sys 類別將獲得該計時點。如果 CPU 不處於忙狀態,將檢查是否在進行任何磁碟 I/O。如果在進行任何磁碟 I/O,則 wio 類別將增加。如果磁碟在進行 I/O 操作並且 CPU 不忙,那么 idle 類別將獲取計時點。wio 時間的放大視圖是由於所有空閒 CPU 被歸為 wio 而不管在 I/O 上等待的執行緒數所導致。例如,僅有一個執行緒執行 I/O 的系統可以報告超過 90% 的 wio 時間而不管其 CPU 數。
在 AIX 4.3.3 中和後繼版本中使用的方法如下:如果在那個 CPU 上啟動一個未完成的的 I/O,那么作業系統 V4.3.3 中的更改僅把一個空閒 CPU 標為 wio。當只有少數執行緒正在執行 I/O 否則系統就空閒的情況下,這種方法可以報告更少的 wio 時間。例如,一個有四個 CPU 且只有一個執行緒執行 I/O 的系統將報告一個最大值是 25% 的 wio 時間。一個有 12 個 CPU 且僅有一個執行緒執行 I/O 的系統將報告一個最大值為 8% 的 wio 時間。 NFS 客戶機通過 VMM 讀/寫,並且為了完成一個 I/O 而在 vmm 等待中用的時間現在將被報告為 I/O 等待時間。
磁碟使用率報告由 iostat 命令生成的第二個報告是磁碟使用率報告。磁碟報告提供了在每個物理磁碟基礎上的統計信息。這個報告有以下類似的格式:
% tm_act | 表示物理磁碟處於活動狀態的時間百分比(驅動器的頻寬使用率)。 |
Kbps | 表示以 KB 每秒為單位的傳輸(讀或寫)到驅動器的數據量。 |
tps | 表示每秒鐘輸出到物理磁碟的傳輸次數。一次傳輸就是一個對物理磁碟的 I/O 請求。多個邏輯請求可被並為對磁碟的一個單一 I/O 請求。傳輸具有中等的大小。 |
Kb_read | 讀取的 KB 總數。 |
Kb_wrtn | 寫入的 KB 總數。 |
CD-ROM 設備的統計信息也要報告。
對於配置有大量磁碟的大型系統配置,當 iostat 沒有執行時,系統可以設定為避免收集物理硬碟的輸入/輸出數據。如果系統用上述的方式配置,那么第一個磁碟報告將顯示訊息引導不可用後的磁碟歷史記錄而不是磁碟統計信息。由 iostat 命令生成的後繼時間間隔報告包含在報告時間間隔期間收集的磁碟統計信息。引導後的任何 tty 和 CPU 都不會影響。如果一個系統管理命令用來重新保留磁碟統計信息,那么第一個 iostat 命令報告會顯示從啟用磁碟輸入/輸出統計信息那一刻時間間隔起點起的行為。
系統吞吐量報告如果指定 -s 標誌將生成這個報告。這份報告提供了整個系統的統計信息。這份報告有以下格式:
Kbps | 表示了每秒以 KB 為單位的傳輸(讀或寫)到整個系統的數據量。 |
tps | 表示每秒傳輸到整個系統的傳輸次數。 |
Kb_read | 從整個系統中讀取的 KB 總數。 |
Kb_wrtn | 寫到整個系統的 KB 總數。 |
適配器吞吐量報告如果指定 -a 標誌將產生該報告。這份報告提供了適配器上的統計信息。
Kbps | 表示每秒鐘以 KB 為單位的傳輸到(讀或寫)到適配器的數據量。 |
tps | 表示每秒鐘輸出到適配器的傳輸次數。 |
Kb_read | 從適配器讀取的 KB 總數。 |
Kb_wrtn | 寫到適配器的 KB 總數。 |
磁碟輸入/輸出歷史記錄要提高性能,已經禁用了磁碟輸入/輸出統計信息集合。要啟用該數據的集合,請輸入:
chdev -l sys0 -a iostat=true要顯示當前設定,請輸入:
lsattr -E -l sys0 -a iostat如果禁用了磁碟輸入/輸出歷史記錄的集合,那么 iostat 輸出的第一個磁碟報告將顯示訊息引導不可用後的磁碟歷史記錄而不是磁碟統計信息。如前,由 iostat 命令生成後繼時間間隔報告包含了在報告時間間隔期間收集的磁碟統計信息。
標誌
-a | 顯示適配器吞吐量報告。 |
-d | -d 標誌不能和 -t 標誌合用,且僅顯示磁碟使用率報告。 |
-s | 顯示系統吞吐量報告。 |
-m | -m 標誌將為以下列印路徑統計信息 到啟用 MPIO(Multi-Path I/O)設備的路徑。 ESS 機器中的路徑。 吞吐量是每個設備的。設備所有路徑的吞吐量符合該設備的吞吐量。 對於 ESS 機器,vpaths 將被當作磁碟,而 hdisks 將被看作路徑。在內部 vpaths 是磁碟,hdisks 是它們的路徑。對於啟用 MPIO 的設備,路徑名將表示為 Path0、Path1、Path2 等等。數字0、1、2 等都是 lspath 命令提供的路徑標識。由於一個設備的路徑可以附加到任何適配器上,所以適配器報告將報告每個適配器下的路徑信息。磁碟名稱是所有路徑的前綴。對於所有啟用 MPIO 的設備,適配器報告將列印路徑名為 hdisk10_Path0 、hdisk0_Path1等等。對於所有 ESS 機器,適配器報告將列印路徑名為 vpath0_hdisk3 、vpath10_hdisk25等等。 |
-t | -t 標誌排除了 -d 標誌且僅顯示了 tty 和 cpu 用法報告。 |
-T | 列印 iostat輸出的每一行邊上的時間戳記。時間戳記以 HH:MM:SS 格式顯示。 |
註:
-s 和 -a 標記都能指定來顯示系統和適配器吞吐量報告。 如果同時指定 -a 標誌和 -t 標誌,將顯示 tty 和 CPU 報告,隨後是適配器吞吐量報告。連線在適配器上的磁碟的使用率報告將不會顯示在適配器吞吐量報告後面。 如果同時指定 -a 標誌和 -d 標誌,將不會顯示 tty 和 CPU 報告。如果指定物理卷參數,那么指定卷的磁碟使用率報告將在它所屬於的相應適配器下列印出來。
示例
要為所有 tty、CPU 和磁碟顯示引導後的單一歷史記錄報告,請輸入: iostat 要為邏輯名是 disk1 的磁碟顯示一個以兩秒為時間間隔的持續磁碟報告,請輸入: iostat -d disk1 2 要為邏輯名是 disk1 的磁碟顯示以兩秒為時間間隔的六個報告,請輸入: iostat disk1 2 6 要為所有磁碟顯示以兩秒為時間間隔的六個報告,請輸入: iostat -d 2 6 要為三個名稱分別為 disk1、disk2、disk3 的磁碟顯示以兩秒為時間間隔的六個報告,請輸入: iostat disk1 disk2 disk3 2 6 要列印系統吞吐量報告,請輸入:
iostat -s 要列印適配器吞吐量報告,請輸入: iostat -a 要列印系統和適配器吞吐量報告,且僅有 tty 和 CPU 報告(沒有磁碟報告),請輸入:
iostat -sat 要列印帶有 hdisk0 和 hdisk7 的磁碟使用率報告的系統和適配器吞吐量報告,請輸入: iostat -sad hdisk0 hdisk7 要顯示 iostat 輸出的每行的下一行的時間戳記,請輸入: iostat -T
檔案
/usr/bin/iostat | 包含 iostat 命令。 |