天天看點

【AIX 學習】性能優化--iostat (續)

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 消耗的标題容量的百分比,僅當分區與共享處理器運作時顯示。由于計算該資料所依據的時間基礎會發生變化,是以授權容量百分比有時可能超過 100%。這種超過隻在采樣時間間隔很小時才會比較明顯。

每過一定時間間隔,核心就更新這條資訊(一般每秒六十次)。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)有關的路徑成本: 

bps 表示每秒傳輸(讀或寫)到驅動器的資料量。使用不同的字尾來代表傳送機關。預設機關是位元組/秒。

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 總數。

虛拟擴充卡的預設吞吐量報告有以下格式:

bkread 每秒從托管伺服器接收至該擴充卡的塊數。

bkwrtn 每秒從該擴充卡發送至托管伺服器的塊數。

partition-id 托管伺服器的分區辨別,它為該擴充卡發送的請求提供服務。

虛拟擴充卡的擴充吞吐量報告(-d 選項)有以下格式:

與傳送(xfer:)有關的路徑成本 

擴充卡讀取服務路徑成本(讀取:) 

rps 表示每秒讀取請求的數量。

avgserv 表示為已發送的讀取請求從托管伺服器上接收響應的平均時間。使用不同的字尾來代表時間機關。預設機關是毫秒。

minserv 表示為已發送的讀取請求從托管伺服器上接收響應的最短時間。使用不同的字尾來代表時間機關。預設機關是毫秒。

maxserv 表示為已發送的讀取請求從托管伺服器上接收響應的最長時間。使用不同的字尾來代表時間機關。預設機關是毫秒。

擴充卡寫入服務路徑成本(寫入:) 

wps 表示每秒寫入請求的數量。

avgserv 表示為已發送的寫入請求從托管伺服器上接收響應的平均時間。使用不同的字尾來代表時間機關。預設機關是毫秒。

minserv 表示為已發送的寫入請求從托管伺服器上接收響應的最短時間。使用不同的字尾來代表時間機關。預設機關是毫秒。

maxserv 表示為已發送的寫入請求從托管伺服器上接收響應的最長時間。使用不同的字尾來代表時間機關。預設機關是毫秒。

擴充卡等待隊列路徑成本(隊列:) 

sqfull 表示每秒内服務隊列變滿(即,托管伺服器不再接受任何服務請求)的次數。

k 1000 位元組。

異步 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 不能同時指定。

-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