歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux iostat命令輸出簡要說明

Linux iostat命令輸出簡要說明

日期:2017/2/28 14:46:24   编辑:Linux教程

iostat是Linux系統內置工具,用於查看機器的CPU時間片分配情況統計或硬盤IO統計。由於強大的top命令的存在(輸出更詳細的CPU/Memory統計數據),因此,在絕大多數場合下,iostat用來查看硬盤設備的IO狀態,在分析機器IO壓力或瓶頸時尤其有用。

本筆記主要參考了man iostat英文解釋,旨在說明iostat的典型用法及其輸出數據的含義。

1. iostat的默認輸出

在shell終端輸入iostat命令後,其默認輸出如下:

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)。

Copyright © Linux教程網 All Rights Reserved