關於linux系統下對磁碟的監控命令
iostat -d -x 10 3
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
主要欄位含義如下:
r/s 每秒讀運算元。
w/s 每秒寫運算元。
rsec/s 每秒從裝置讀取的扇區數量。
wsec/s 每秒向裝置寫入的扇區數量。
avgrq-sz I/O 請求的平均扇區數。
avgqu-sz I/O 請求的平均佇列長度。
await I/O 請求的平均等待時間,單位為毫秒。
svctm I/O 請求的平均服務時間,單位為毫秒。
%util 處理 I/O 請求所佔用的時間的百分比,即裝置利用率。
#sar -pd 10 3
輸出的主要欄位含義如下:
DEV 正在監視的塊裝置
tps 每秒鐘物理裝置的 I/O 傳輸總量
rd_sec/s 每秒從裝置讀取的扇區數量
wr_sec/s 每秒向裝置寫入的扇區數量
avgrq-sz I/O 請求的平均扇區數
avgqu-sz I/O 請求的平均佇列長度
await I/O 請求的平均等待時間,單位為毫秒
svctm I/O 請求的平均服務時間,單位為毫秒
%util I/O 請求所佔用的時間的百分比,即裝置利用率
1 . 監控指標
前文介紹了多個監控指標,比如吞吐量,每秒 I/O 數,平均單次 I/O 響應時間,磁碟利用率等,使用者可以根據自身系統和應用的特點選取監控指標。下文將以磁碟利用率為例進行監控指令碼的設計。
2 .監控手段
對於 AIX, 命令“iostat -d”的輸出欄位“% tm_act”反映磁碟利用率;對於 Linux, 命令“iostat -d -x”的輸出欄位“%util”反映磁碟利用率。監控的頻次可以通過“iostat”命令本身的引數指定。
3. 告警機制
一般來說,如果磁碟使用率長時間達到 75% 或 80%, 通常會視為磁碟較忙,一般需進行調整磁碟佈局,調整應用使用分配等管理活動,如果磁碟使用率偶爾較高,只需要繼續監視即可。因此告警既不能對於偶發現象頻繁告警,也不能放過持續時間較長的現象,本例的告警機制設定為“在一定時間間隔內的一定比例的監控記錄超出設定的磁碟利用率門限值即告警”
尋道時間Tseek是指將讀寫磁頭移動至正確的磁軌上所需要的時間。尋道時間越短,I/O操作越快,目前磁碟的平均尋道時間一般在3-15ms。
旋轉延遲Trotation是指碟片旋轉將請求資料所在扇區移至讀寫磁頭下方所需要的時間。旋轉延遲取決於磁碟轉速,通常使用磁碟旋轉一週所需時間的1/2表示。比如,7200 rpm的磁碟平均旋轉延遲大約為60*1000/7200/2 = 4.17ms,而轉速為15000 rpm的磁碟其平均旋轉延遲約為2ms。
資料傳輸時間Ttransfer是指完成傳輸所請求的資料所需要的時間,它取決於資料傳輸率,其值等於資料大小除以資料傳輸率。目前IDE/ATA能達到133MB/s,SATA II可達到300MB/s的介面資料傳輸率,資料傳輸時間通常遠小於前兩部分時間。
IOPS = 1000 / (3 + 60000/7200/2) = 140
IOPS = 1000 / (3 + 60000/10000/2) = 167
IOPS = 1000 / (3 + 60000/15000/2) = 200
固態硬碟SSD是一種電子裝置, 避免了傳統磁碟在尋道和旋轉上的時間花費,儲存單元定址開銷大大降低,因此IOPS可以非常高,能夠達到數萬甚至數十萬。實際測量中,IOPS數值會受到很多因素的影響,包括I/O負載特徵(讀寫比例,順序和隨機,工作執行緒數,佇列深度,資料記錄大小)、系統配置、作業系統、磁碟驅動等等。 因此對比測量磁碟IOPS時,必須在同樣的測試基準下進行,即便如何也會產生一定的隨機不確定性。通常情況下,IOPS可細分為如下幾個指標:
Toatal IOPS,混合讀寫和順序隨機I/O負載情況下的磁碟IOPS,這個與實際I/O情況最為相符,大多數應用關注此指標。
Random Read IOPS,100%隨機讀負載情況下的IOPS。
Random Write IOPS,100%隨機寫負載情況下的IOPS。
Sequential Read IOPS,100%順序負載讀情況下的IOPS。
Sequential Write IOPS,100%順序寫負載情況下的IOPS。 IOPS的測試benchmark工具主要有Iometer, IoZone, FIO等,可以綜合用於測試磁碟在不同情形下的IOPS。對於應用系統,需要首先確定資料的負載特徵,然後選擇合理的IOPS指標進行測量和對比分析,據此選擇合適的儲存介質和軟體系統。
參考資料
http://en.wikipedia.org/wiki/IOPS