linux iostat命令輸出簡要說明

來源:互聯網
上載者:User

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及以後的版本中有效。        除上面列出的幾種用法外,各種參數還可組合使用,限於篇幅,這裡不再展開。想瞭解的話,在自己機器上實驗一下,學習效果會更好。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.