歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

linux iostat命令輸出簡要說明

linux iostat命令輸出簡要說明       iostat是Linux系統內置工具,用於查看機器的CPU時間片分配情況統計或硬盤IO統計。由於強大的top命令的存在(輸出更詳細的CPU/Memory統計數據),因此,在絕大多數場合下,iostat用來查看硬盤設備的IO狀態,在分析機器IO壓力或瓶頸時尤其有用。        本筆記主要參考了man iostat英文解釋,旨在說明iostat的典型用法及其輸出數據的含義。 1. iostat的默認輸出         在shell終端輸入iostat命令後,其默認輸出如下:   [plain]  Linux 2.6.9xenu_7-0-0-0 (demo-hostname)   06/21/2013      avg-cpu:  %user   %nice    %sys %iowait   %idle              1.65    0.00    0.62    0.60   97.12      Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn   sda1              1.29         1.09        12.38   11546642  130611280   sda2              0.00         0.00         0.00        296          0   sda3             11.79       142.71       395.95 1505879770 4178084600             由man可知,若iostat在該機器上是首次執行,則輸出統計的采集時間范圍為機器啟動時刻到本次iostat命令執行時刻的時間段。否則,采集時間范圍為上次iostat執行時刻到本次執行時刻的時間段。        從輸出內容可知,iostat先輸出的第1行為linux kernel version及hostname及命令運行時刻,後面幾行的內容則分為2部分:cpu統計;Device統計,下面分別說明。        1)cpu統計輸出         在kernel 2.6.9的機器上,avg-cpu輸出內容由5個字段構成,其中%user/%nice/%sys/%idle比較容易理解,此處不再贅述。%iowait表示由於機器響應磁盤IO請求導致的CPU空閒時間,對於部署有IO密集型應用的機器,該字段的值通常比CPU密集型的機器對該字段的統計值要大。         在kernel版本為2.6.32的機器中,可能還會有%steal字段,其含義為:         Show the percentage of time spent in involuntary wait by the virtual CPU or CPUs while the hypervisor was servicing another virtual processor.         2)Device統計輸出         這裡的Device通常就是hard disk,即硬盤。輸出包括6個字段,下面分別說明。         Device: 機器上的設備列表,通常是塊設備名(在linux中,與塊設備相對應的是字符設備,兩者的區別可以參考這裡來了解)或分區名,如上面示例中的sda1/sda2/sda3;         tps: 每秒針對設備的傳輸次數(transfers),這裡的"傳輸"是指I/O請求。需要注意的是,邏輯上的多次請求可能會被操作系統優化合並為一次I/O請求,linux系統對磁盤訪問的調度算法就采用了這個策略(若感興趣,可在這篇文章中搜索關鍵詞"merging"來了解linux的io scheduler對requests merging的優化);         Blk_read/s: 每秒從設備讀取的數據大小,在這裡,數據量以block為單位來描述。在kernel 2.4及之後版本中,block即指扇區(sector),因此,1 block = 512 bytes;在kernel 2.4之前的版本中,block的大小不確定;         Blk_wrtn/s: 每秒向設備寫入的數據大小,數據大小同樣用block來描述;         Blk_read: 系統上電以來,從設備讀取的數據總數(單位:block);         Blk_wrtn: 系統上電以來,向設備寫入的數據總數(單位:block)。 2. iostat -d -k或iostat -c         iostat不加任何參數時,默認輸出avg-cpu及device兩種統計數據。若我們只關心device的統計數據,可以用-d來顯式指明只輸出device相關的統計。另外,device的統計數據默認單位是block(=512Kbytes),我們可以用-k來指定輸出的統計數據值以kilobytes為單位。         例如,在shell終端輸入iostat -d -k後,輸出格式如下所示: [plain]  Linux 2.6.9xenu_7-0-0-0 (demo-hostname)   06/29/2013      Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn   sda1              1.29         0.51         6.16    5789577   69260268   sda2              0.00         0.00         0.00        148          0   sda3             11.23        67.20       187.49  755494461 2107939224           可以看到,與默認輸出格式相比,此次輸出內容有4個字段名及數值均有所變化:字段名從Blk_xxx變為kB_xxx(表明這些字段的單位從block變為kB),數值也大概變為原來的512倍。         若我們只關心avg-cpu的統計數據,則可以通過iostat -c來顯式指定。 3. iostat其它用法         1)iostat interval count         iostat默認是調用一次才輸出一次統計結果,在實際使用中,通常會有只調一次,然後自動按某固定時間間隔連續輸出n次的需求。此時可借助可選的interval和count參數來達到這個目的(關於這兩個參數,可man查看)。例如iostat 1 100表示每隔1s輸出一次,共輸出100次         2)iostat -p device | ALL        當linux主機由多塊磁盤,而我們只關心某個或某幾個設備的統計數據時,可以通過iostat -p sda1 [sda2] [sdan]來顯式指明僅輸出指定設備的統計數據。         iostat -p ALL則表明需要輸出系統中定義的所有塊設備或分區的統計數據,包括從未被用到的那些設備。此時,輸出內容可能會出現ram0之類的設備名,它表示ramdisk,想了解的同學可以查看這裡https://wiki.archlinux.org/index.php/Ramdisk。         注:ALL參數只在kernel 2.5及以後的版本中有效。         除上面列出的幾種用法外,各種參數還可組合使用,限於篇幅,這裡不再展開。想了解的話,在自己機器上試驗一下,學習效果會更好。
Copyright © Linux教程網 All Rights Reserved