aix基本命令之iostat

531968912發表於2017-12-27
報告中央處理器(CPU)的統計資訊,整個系統、介面卡、tty 裝置、磁碟以及 CD-ROM 的非同步輸入/輸出(AIO)和輸入/輸出統計資訊。[@more@]

語法
iostat [ -a ] [ -l ] [ -s ] [-t ] [ -T ] [ -z ] [ { -A [ -P ] [ -q | -Q ] } | { -d |-D [-R ] }[ -m ] [ Drives ... ] [ Interval] [ Count ]

描述
iostat 命令用來監視系統輸入/輸出裝置負載,這透過觀察與它們的平均傳送速率相關的物理磁碟的活動時間來實現。iostat 命令生成的報告可以用來更改系統配置來更好地平衡物理磁碟和介面卡之間的輸入/輸出負載。

每次執行 iostat 命令時,就報告所有的統計資訊。報告由 tty and CPU 標題行以及接下來的 tty 或 非同步 I/O 和 CPU 統計資訊行組成。在多處理器系統上,CPU 統計資訊是系統範圍計算的,是所有處理器的平均值。

帶有系統中當前活動的 CPU 數量和活動的磁碟數量的眉行顯示在輸出結果的開始部分。如果指定 -s 標誌,則顯示系統眉行,接下來的一行是整個系統的統計資訊。系統主機名顯示在系統眉行中。

如果指定 -a 標誌,就會顯示一個介面卡頭行,隨後是一行介面卡的統計資訊。這後面將回有一個磁碟頭行和連線到介面卡的所有磁碟/CD-ROM 的統計資訊。為所有與系統連線的磁碟介面卡生成這種報告。

顯示一個磁碟頭行,隨後是一行配置的磁碟的統計資訊。如果指定 PhysicalVolume 引數,則只顯示那些指定的名稱。

如果指定 PhysicalVolume 引數,則可以指定一個或者更多的字母或者字母數字的物理卷。如果指定 PhysicalVolume 引數,就會顯示 tty 和 CPU 報告並且磁碟報告包含指定驅動器的統計資訊。如果沒有發現指定邏輯驅動器名,則報告將列出指定的名稱並且顯示沒有找到驅動器的訊息。如果沒有指定邏輯驅動器名,報告則包含所有已配置的磁碟和 CD-ROM 的統計資訊。如果系統上沒有配置驅動器,則不生成磁碟報告。PhysicalVolume 引數中的第一個字元不能為數字型。

Interval 引數指定了在每個報告之間的以秒計算的時間量。如果沒有指定 Interval 引數,iostat 命令將生成一個包含統計資訊的報告,該統計資訊是在系統啟動(引導)時間裡生成的。 Count 引數可被指定來連線 Interval 引數。如果指定了 Count 引數,它的記數值就確定在 Interval 秒間生成的報告數。如果指定了 Interval 引數但沒有指定 Count 引數,iostat 命令就會不斷生成報告。

iostat 命令用來確定一個物理卷是否正在形成一個效能瓶頸,以及是否有可能改善這種情況。物理卷的 % 使用率欄位表明了檔案活動在驅動器中分佈多均勻。物理卷的高 % 使用率是表明也許存在這個資源的爭用很好的徵兆。由於 CPU 使用率的統計資訊同樣適用於 iostat 報告,CPU 在 I/O 等待佇列中的時間的百分比可以在同一時間確定。如果 I/O 等待時間是有效數字並且磁碟使用率不是在捲上均勻分佈,則就要考慮在驅動器上分佈資料。

從 AIX 5.3 開始,iostat 命令報告在 微分割槽 環境中所消耗的物理處理器數量(physc)和所消耗的授權百分比(% entc)。這些度量值只在 微分割槽 環境上顯示。

注:
在為 iostat 命令維護磁碟 I/O 歷史中,消耗一部分系統資源。使用 sysconfig 子例程,或者系統管理介面工具(SMIT)來停止歷史記錄帳戶。當 iostat 命令正為 Count 迭代執行時,並且如果系統配置中有影響 iostat 命令輸出的更改,則它會顯示關於配置更改的警告訊息。顯示更新後的系統配置資訊和標題後,它接著繼續進行輸出。
報告
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 請求時的時間百分比。
physc 消耗的物理處理器的數量,僅當分割槽與共享處理器執行時顯示。
% entc 消耗的標題容量的百分比,僅當分割槽與共享處理器執行時顯示。

每過一定時間間隔,核心就更新這條資訊(一般每秒六十次)。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 總數。

如果指定了 -D 標誌,則報告有以下度量值:

與磁碟傳送(xfer)有關的度量值:
% tm_act 表示物理磁碟處於活動狀態的時間百分比(驅動器的頻寬使用率)。
bps 表示每秒傳輸(讀或寫)到驅動器的資料量。使用不同的字尾來代表傳送單位。預設單位是位元組/秒。
tps 表示每秒鐘輸出到物理磁碟的傳輸次數。一次傳輸就是一個對物理磁碟的 I/O 請求。多個邏輯請求可被併為對磁碟的一個單一 I/O 請求。傳輸具有不確定的大小。
bread 表示每秒從驅動器上讀取的資料量。使用不同的字尾來代表傳送單位。預設單位是位元組/秒。
bwrtn 表示每秒寫入到驅動器的資料量。使用不同的字尾來代表傳送單位。預設單位是位元組/秒。
磁碟讀取服務度量值(讀取):
rps 表示每秒讀取傳輸的數量。
avgserv 表示每次讀取傳輸的平均服務時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
minserv 表示最少的讀取服務時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
maxserv 表示最多的讀取服務時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
timeouts 表示每秒讀取超時的數量。
fails 表示每秒失敗的讀取請求的數量。
磁碟寫入服務度量值(寫入):
wps 表示每秒寫入傳輸的數量。
avgserv 表示每次寫入傳輸的平均服務時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
minserv 表示最少的寫入服務時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
maxserv 表示最多的寫入服務時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
timeouts 表示每秒寫入超時的數量。
fails 表示每秒失敗的寫入請求的數量。
磁碟等待佇列服務度量值(佇列):
avgtime 表示傳輸請求在等待佇列中所花的平均時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
mintime 表示傳輸請求在等待佇列中所花的最短時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
maxtime 表示傳輸請求在等待佇列中所花的最長時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
avgwqsz 表示等待佇列的平均大小。
avgsqsz 表示服務佇列的平均大小。
sqfull 表示每秒內服務佇列變滿(即,磁碟不再接受任何服務請求)的次數。
代表不同說明單元的字尾圖注
字尾 描述
K 1000 位元組
M 1 000 000 位元組(如果以 xfer 度量值顯示)。分鐘(如果以讀取/寫入/等待服務度量值顯示)。
G 1 000 000 000 位元組。
T 1 000 000 000 000 位元組。
S 秒。
H 小時。

注:
對於不支援服務時間度量值的驅動器,將不顯示讀取、寫入和等候佇列服務度量值。
CD-ROM 裝置的統計資訊也要報告。

系統吞吐量報告
如果指定 -s 標誌將生成這個報告。這份報告提供了整個系統的統計資訊。這份報告有以下格式:

Kbps 表示了每秒以 KB 為單位的傳輸(讀或寫)到整個系統的資料量。
tps 表示每秒傳輸到整個系統的傳輸次數。
Kb_read 從整個系統中讀取的 KB 總數。
Kb_wrtn 寫到整個系統的 KB 總數。

介面卡吞吐量報告
如果指定 -a 標誌將生成該報告。這份報告提供了以每個介面卡(包括物理介面卡和虛擬介面卡)為基礎的統計資訊。該報告對於物理介面卡報告具有以下格式:

Kbps 表示每秒鐘以 KB 為單位的傳輸到(讀或寫)到介面卡的資料量。
tps 表示每秒鐘輸出到介面卡的傳輸次數。
Kb_read 從介面卡讀取的 KB 總數。
Kb_wrtn 寫到介面卡的 KB 總數。

虛擬介面卡的預設吞吐量報告有以下格式:

Kbps 表示每秒鐘以 KB 為單位的傳輸到(讀或寫)到介面卡的資料量。
tps 表示每秒鐘輸出到介面卡的傳輸次數。
bkread 每秒從託管伺服器接收至該介面卡的塊數。
bkwrtn 每秒從該介面卡傳送至託管伺服器的塊數。
partition-id 託管伺服器的分割槽標識,它為該介面卡傳送的請求提供服務。

虛擬介面卡的擴充套件吞吐量報告(-D 選項)有以下格式:

與傳送(xfer:)有關的度量值
Kbps 表示每秒鐘以 KB 為單位的傳輸到(讀或寫)到介面卡的資料量。
tps 表示每秒鐘輸出到介面卡的傳輸次數。
bkread 每秒從託管伺服器接收至該介面卡的塊數。
bkwrtn 每秒從該介面卡傳送至託管伺服器的塊數。
partition-id 託管伺服器的分割槽標識,它為該介面卡傳送的請求提供服務。
介面卡讀取服務度量值(讀取:)
rps 表示每秒讀取請求的數量。
avgserv 表示為已傳送的讀取請求從託管伺服器上接收響應的平均時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
minserv 表示為已傳送的讀取請求從託管伺服器上接收響應的最短時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
maxserv 表示為已傳送的讀取請求從託管伺服器上接收響應的最長時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
介面卡寫入服務度量值(寫入:)
wps 表示每秒寫入請求的數量。
avgserv 表示為已傳送的寫入請求從託管伺服器上接收響應的平均時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
minserv 表示為已傳送的寫入請求從託管伺服器上接收響應的最短時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
maxserv 表示為已傳送的寫入請求從託管伺服器上接收響應的最長時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
介面卡等待佇列度量值(佇列:)
avgtime 表示傳輸請求在等待佇列中所花的平均時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
mintime 表示傳輸請求在等待佇列中所花的最短時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
maxtime 表示傳輸請求在等待佇列中所花的最長時間。使用不同的字尾來代表時間單位。預設單位是毫秒。
avgwqsz 表示等待佇列的平均大小。
avgsqsz 表示服務佇列的平均大小。
sqfull 表示每秒內服務佇列變滿(即,託管伺服器不再接受任何服務請求)的次數。
代表不同說明單元的字尾圖注
字尾 描述
K 1000 位元組。
M 1 000 000 位元組(如果以 xfer 度量值顯示)。分鐘(如果以讀取/寫入/等待服務度量值顯示)。
G 1 000 000 000 位元組。
T 1 000 000 000 000 位元組。
S 秒。
H 小時。

非同步 I/O 報告
非同步 I/O 報告有以下列標題:

avgc 指定時間間隔的每秒平均全域性 AIO 請求計數。
avfc 指定時間間隔的每秒平均快速路徑請求計數。
maxgc 上一次訪存這個值以來的最大全域性 AIO 請求計數。
maxfc 上一次訪存這個值以來的最大快速路徑請求計數。
maxreqs 所允許的最大 AIO 請求數。

磁碟輸入/輸出歷史記錄
為了提高效能,已經禁用了磁碟輸入/輸出統計資訊的收集。要啟用該資料的集合,請輸入:


chdev -l sys0 -a iostat=true
要顯示當前設定,請輸入:


lsattr -E -l sys0 -a iostat
如果禁用了磁碟輸入/輸出歷史記錄的收集,並且在不帶時間間隔的情況下呼叫了 iostat,則 iostat 輸出將顯示訊息自引導以來的磁碟歷史記錄不可用,而不是磁碟統計資訊。

標誌

-a 指定介面卡吞吐量報告。
-A 顯示指定時間間隔和計數的 AIO 統計資訊。
-d 只指定驅動器報告。
-D 只指定擴充套件驅動器報告。
-l 對長列表方式顯示輸出。預設列寬是 80。
-m 指定路徑的統計資訊。
-P 與 -A 選項相同,使用 POSIX AIO 呼叫獲取的資料除外。
-q 指定 AIO 佇列和它們的請求計數。
-Q 顯示所有安裝的檔案系統和相關的佇列數以及它們請求計數的列表。
-R 指定在每個時間間隔都應復位 min* 和 max* 值。預設情況下將僅在 iostat 啟動時執行一次復位。
-s 指定系統吞吐量報告。
-t 只指定 tty/cpu 報告。
-T 指定時間戳記。
-z 復位磁碟輸入/輸出統計資訊。只有 root 使用者才可以使用此選項。

注:
-q 或 -Q 只能與 -A 一起指定。
-a 和 -s 也可以與 -A 一起指定,但在指定了-q 或 -Q 時不能與 -A 一起指定。
-t 和 -d 不能同時指定。
-t 和 -D 不能同時指定。
-d 和 -D 不能同時指定。
-R 只能和 -D 一起指定。
示例
要為所有 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 5
要列印以二十秒為時間間隔的十個系統和介面卡吞吐量報告,且僅帶有 tty 和 CPU 報告(沒有磁碟報告),請輸入:


iostat -sat 20 10
要列印帶有 hdisk0 和 hdisk7 的磁碟使用率報告的系統和介面卡吞吐量報告(每 30 秒一次),請輸入:

iostat -sad hdisk0 hdisk7 30
要顯示 iostat 輸出的每行的下一行的時間戳記,請輸入:
iostat -T 60
要顯示關於 AIO 的以兩秒為時間間隔的六個報告,請輸入:
iostat -A 2 6
要顯示自引導以來與所有已安裝的檔案系統相關的佇列的 AIO 統計資訊,請輸入:
iostat -A -Q
要顯示所有磁碟的擴充套件驅動器報告,請輸入:
iostat -D
要顯示某個特定磁碟的擴充套件驅動器報告,請輸入:
iostat –D hdisk0
要復位磁碟輸入/輸出統計資訊,請輸入:
iostat –z
檔案

/usr/bin/iostat 包含 iostat 命令。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2149375/,如需轉載,請註明出處,否則將追究法律責任。