iostat
是 Linux 系統中用於監控 CPU 使用情況和磁碟 I/O 活動的工具,它可以幫助你瞭解系統的 I/O 效能,尤其是在磁碟和儲存裝置上的讀寫情況。iostat
是 sysstat
工具包的一部分,通常用於檢測系統是否存在 I/O 效能瓶頸。
1. 安裝 iostat
在一些 Linux 發行版中,iostat
可能沒有預設安裝,可以透過以下命令安裝:
-
Debian/Ubuntu:
sudo apt update sudo apt install sysstat
-
CentOS/RHEL:
sudo yum install sysstat
-
Fedora:
sudo dnf install sysstat
2. 基本用法
檢視所有裝置的 I/O 狀況
預設情況下,執行 iostat
會顯示系統的 CPU 和所有裝置的 I/O 活動情況:
iostat
輸出將顯示兩部分:
- CPU 使用情況:顯示使用者態、系統態、空閒時間等。
- 裝置 I/O 使用情況:顯示裝置名稱、每秒讀/寫請求數量、每次請求的平均塊大小等。
只檢視裝置的 I/O 資訊
如果你只對儲存裝置的 I/O 活動感興趣,可以使用以下命令忽略 CPU 資訊:
iostat -d
-d
:只顯示磁碟 I/O 統計資訊。
每秒重新整理統計資訊
可以設定定時重新整理統計資訊,每隔幾秒重新整理一次當前的 I/O 使用情況。比如每隔 5 秒重新整理一次,並且顯示 3 次:
iostat -d 5 3
5
:表示每隔 5 秒重新整理一次。3
:表示顯示 3 次結果。
檢視裝置的詳細 I/O 資訊
使用 -x
選項可以檢視每個裝置的詳細 I/O 統計資訊:
iostat -x
這將顯示如下指標:
- rrqm/s:每秒合併的讀請求數(從作業系統角度)。
- wrqm/s:每秒合併的寫請求數。
- r/s:每秒完成的讀請求數。
- w/s:每秒完成的寫請求數。
- rMB/s:每秒讀出的 MB 數。
- wMB/s:每秒寫入的 MB 數。
- avgrq-sz:平均每個 I/O 請求的大小(以塊為單位)。
- avgqu-sz:平均 I/O 佇列長度。
- await:I/O 操作的平均等待時間(毫秒)。
- svctm:平均服務時間(毫秒)。
- %util:裝置的使用率,表示在某個時間段內裝置忙碌的百分比。
檢視特定裝置的 I/O
可以透過指定裝置名來檢視單個裝置的 I/O 情況:
iostat -d -x /dev/sda
/dev/sda
:指定的裝置名稱。
只顯示某個裝置的統計資訊
如果你只想檢視某個裝置的統計資料,可以使用:
iostat -p sda
這將顯示與 sda
相關的 I/O 活動。
3. 常用選項
-c
:只顯示 CPU 使用情況。-d
:顯示磁碟 I/O 統計資訊。-k
:將結果單位顯示為 KB(預設單位是塊)。-m
:將結果單位顯示為 MB。-p
:顯示指定裝置及其分割槽的 I/O 統計資訊。-t
:顯示統計資訊時,附帶時間戳。-x
:顯示裝置的詳細統計資訊。
4. 示例
每隔 2 秒顯示一次所有裝置的詳細 I/O 資訊
iostat -x 2
檢視特定裝置每秒的讀寫速率
iostat -d -m /dev/sda 1
- 這將每秒重新整理一次
/dev/sda
的讀寫速率,單位為 MB。
檢視裝置的讀寫等待時間和佇列長度
iostat -x -p sda
await
:裝置的平均等待時間,通常越小越好。avgqu-sz
:裝置的平均佇列長度,顯示等待處理的請求數量。
5. 結果解讀
以下是一些常見的指標及其含義:
- %util:裝置的利用率,100% 表示裝置始終在忙碌。如果 %util 接近 100%,表示裝置可能已經成為系統的效能瓶頸。
- await:I/O 請求的平均等待時間,通常該值越小越好。如果該值過高,表示 I/O 瓶頸較為嚴重。
- r/s, w/s:每秒的讀寫請求數,顯示磁碟的讀寫頻率。
- rMB/s, wMB/s:每秒讀寫的 MB 數,顯示磁碟的讀寫頻寬。
6. 總結
- 基本使用:直接執行
iostat
可以檢視 CPU 和裝置的 I/O 狀態。 - 定時監控:可以設定定時重新整理,比如每 5 秒重新整理一次 I/O 統計資料。
- 詳細統計:透過
-x
引數可以檢視詳細的 I/O 指標,包括裝置利用率和等待時間。 - 指定裝置:可以透過指定裝置名來檢視某一裝置的效能。
iostat
是一個非常有用的工具,特別是在診斷磁碟 I/O 效能問題和檢測系統瓶頸時。