iotop 實時顯示I/O
Options
iostat cpu及設備利用率報告
CPU報告
設備報告
Options
EXAMPLES
pidstat 報告Linux任務的統計信息
Options
EXAMPLES
總結
iotop 實時顯示I/O
顯示進程或線程的實時I/O,可正對單個進程查看。
$ iotop -h
DISK READ和DISK WRITE是採樣週期內使用的塊I/O帶寬。
SWAPIN和IO是線程在更頻繁地交換和等待I/O時分別花費的時間百分比。
PRIO是線程運行的I/O優先級(使用ionice命令設置)。
Controls: 控制:
left and right arrows to change the sorting column, (左右)箭頭更改排序列,
r to invert the sorting order, (r)反轉排序順序,
o to toggle the --only option, (o)切換--only選項,
p to toggle the --processes option, (p)切換--processes選項,
a to toggle the --accumulated option, (a)切換--accumulated選項,
i to change I/O priority, (i)改變I/O優先級,
q to quit, any other key to force a refresh. (q)退出,強制刷新的任何其餘鍵。
Options:
--version |
show program's version number and exit |
顯示程序的版本號並退出 |
-h, --help |
show this help message and exit |
顯示此幫助消息並退出 |
-o, --only |
only show processes or threads actually doing I/O |
僅顯示實際執行I / O的進程或線程 |
-b, --batch |
non-interactive mode |
非交互模式 |
-n NUM, --iter=NUM |
number of iterations before ending [infinite] |
結束前的迭代次數[無限] |
-d SEC, --delay=SEC |
delay between iterations [1 second] |
迭代之間的延遲[1秒] |
-p PID, --pid=PID |
processes/threads to monitor [all] |
進程/線程監視[所有] |
-u USER, --user=USER |
users to monitor [all] |
用戶監控[所有] |
-P, --processes |
only show processes, not all threads |
只顯示進程,而不是全部線程 |
-a, --accumulated |
show accumulated I/O instead of bandwidth |
顯示累積的I / O而不是帶寬 |
-k, --kilobytes |
use kilobytes instead of a human friendly unit |
使用千字節代替人類友好單位 |
-t, --time |
add a timestamp on each line (implies --batch) |
在每一行添加一個時間戳(暗示--batch) |
-q, --quiet |
suppress some lines of header (implies --batch) |
抑制一些標題行(暗示--batch) |
iostat cpu及設備利用率報告
iostat命令用於經過觀察設備相對於其平均傳輸速率的活動時間來監視系統輸入/輸出設備負載。
iostat命令生成可用於更改系統配置的報告,以更好地平衡物理磁盤之間的輸入/輸出負載。
interval參數指定每一個報告之間的時間量(以秒爲單位)。
count參數能夠與interval參數一塊兒指定。
若是指定了count參數,則count的值將肯定以間隔秒間隔生成的報告數。
若是指定了interval參數而沒有count參數,則iostat命令會連續生成報告。
REPORTS
iostat命令生成兩種類型的報告,即CPU利用率報告和「設備利用率」報告。
CPU Utilization Report CPU利用率報告
- %user 顯示在用戶級別(應用程序)執行時發生的CPU利用率百分比。
- %nice 顯示在具備良好優先級的用戶級別執行時發生的CPU利用率百分比。
- %system 顯示在系統級別(內核)執行時發生的CPU利用率百分比。
- %iowait 顯示系統具備未完成的磁盤I/O請求的CPU或CPU空閒的時間百分比。
- %steal 顯示虛擬機管理程序爲另外一個虛擬處理器提供服務時虛擬CPU或CPU在非自願等待中花費的時間百分比。
- %idle 顯示CPU或CPU空閒的時間百分比,而且系統沒有未完成的磁盤I/O請求。
Device Utilization Report 是設備利用率報告。
設備報告默認顯示以下8個字段列
- Device: 此列提供/ dev目錄中列出的設備(或分區)名稱。
- tps 指示發出給設備的每秒傳輸次數。傳輸是對設備的I/O請求。能夠將多個邏輯請求組合到設備的單個I/O請求中。轉移的大小不肯定。
- Blk_read/s (kB_read/s, MB_read/s) 表示從設備讀取的數據量,以每秒的塊數(千字節,兆字節)表示。 塊等同於扇區,所以具備512字節的大小。
- Blk_wrtn/s (kB_wrtn/s, MB_wrtn/s) 指示寫入設備的數據量,以每秒的塊數(千字節,兆字節)表示。
- Blk_dscd/s (kB_dscd/s, MB_dscd/s) 指示設備丟棄的數據量,以每秒的塊數(千字節,兆字節)表示。
- Blk_read (kB_read, MB_read) 讀取的塊總數(千字節,兆字節)。
- Blk_wrtn (kB_wrtn, MB_wrtn) 寫入的塊總數(千字節,兆字節)。
- Blk_dscd (kB_dscd, MB_dscd) 丟棄的塊總數(千字節,兆字節)。
使用-x選項,將顯示以下全部字段統計信息。
- r/s 設備每秒完成的讀取請求數(合併後)。
- w/s 每秒爲設備完成的寫請求數(合併後)。
- d/s 設備每秒完成的丟棄請求數量(合併後)。
- sec/s (kB/s, MB/s) 每秒從設備讀取,寫入或丟棄的扇區數(千字節,兆字節)。
- rsec/s (rkB/s, rMB/s) 每秒從設備讀取的扇區數(千字節,兆字節)。
- wsec/s (wkB/s, wMB/s) 每秒寫入設備的扇區數(千字節,兆字節)。
- dsec/s (dkB/s, dMB/s) 每秒丟棄設備的扇區數(千字節,兆字節)。
- rqm/s 每秒合併到隊列到設備的I/O請求數。
- rrqm/s 每秒合併到隊列到設備的讀取請求數
- wrqm/s 每秒合併的寫入請求數,這些寫入請求已排隊到設備。
- drqm/s 每秒合併到隊列到設備的丟棄請求數。
- %rrqm 在發送到設備以前,讀取請求的百分比合並在一塊兒。
- %wrqm 寫入請求的百分比在發送到設備以前合併在一塊兒。
- %drqm 丟棄請求在發送到設備以前合併在一塊兒的百分比。
- areq-sz 發佈到設備的I/O請求的平均大小(以千字節爲單位)。 注意:在之前的版本中,此字段稱爲avgrq-sz,並以扇區表示。
- rareq-sz 發佈到設備的讀取請求的平均大小(以千字節爲單位)。
- wareq-sz 發佈到設備的寫入請求的平均大小(以千字節爲單位)。
- dareq-sz 發給設備的丟棄請求的平均大小(以千字節爲單位)。
- await 發送給要提供的設備的I/O請求的平均時間(以毫秒爲單位)。這包括隊列中的請求所花費的時間以及爲其提供服務所花費的時間。
- r_await 發送給要提供的設備的讀取請求的平均時間(以毫秒爲單位)。這包括隊列中的請求所花費的時間以及爲其提供服務所花費的時間。
- w_await 發送給要提供的設備的寫請求的平均時間(以毫秒爲單位)。這包括隊列中的請求所花費的時間以及爲其提供服務所花費的時間。
- d_await 發送給要提供的設備的丟棄請求的平均時間(以毫秒爲單位)。這包括隊列中的請求所花費的時間以及爲其提供服務所花費的時間。
- aqu-sz 發給設備的請求的平均隊列長度。 注意:在之前的版本中,此字段稱爲avgqu-sz。
- %util 向設備發出I/O請求所通過的時間百分比(設備的帶寬利用率)。對於按順序提供請求的設備,此值接近100%時,會發生設備飽和。但對於並行處理請求的設備,例如RAID陣列和現代SSD,此數字並不反映其性能限制。
OPTIONS
-c Display the CPU utilization report. 顯示CPU利用率報告。
-d Display the device utilization report. 顯示設備利用率報告。
--dec={ 0 | 1 | 2 } 指定要使用的小數位數(0到2,默認值爲2)。
-g group_name { device [...] | ALL } 顯示一組設備的統計信息。
iostat命令報告列表中每一個設備的統計信息,而後顯示組的全局統計信息,顯示爲group_name,並由列表中的全部設備組成。ALL關鍵字表示系統定義的全部塊設備都應包含在組中。
-H 此選項必須與選項-g一塊兒使用,並指示僅顯示組的全局統計信息,而不顯示組中各個設備的統計信息。
-h 令人類更容易閱讀設備利用率報告。 - 使用此選項隱式啓用--human。
--human 以人類可讀格式(例如1.0k,1.2M等)打印大小。使用此選項顯示的單位將取代與度量標準關聯的任何其餘默認單位(例如千字節,扇區......)。
-j { ID | LABEL | PATH | UUID | ... } [ device [...] | ALL ] 顯示持久性設備名稱。
選項ID,LABEL等指定持久性名稱的類型。 這些選項不受限制,只有先決條件是/dev/disk中存在具備所需持久性名稱的目錄。(可選)能夠在所選的持久性名稱類型中指定多個設備。 由於持久性設備名稱一般很長,因此選項
-k Display statistics in kilobytes per second. 以千字節/秒爲單位顯示統計信息。
-m Display statistics in megabytes per second. 以兆字節/秒爲單位顯示統計信息。
-N 顯示任何設備映射器設備的已註冊設備映射器名稱。 用於查看LVM2統計信息。
-o JSON 以JSON(Javascript Object Notation)格式顯示統計信息。 JSON輸出字段順序未定義,而且未來可能會添加新字段。
-p [ { device [,...] | ALL } ] -p選項顯示塊設備及其系統使用的全部分區的統計信息。
若是在命令行上輸入了設備名稱,則會顯示其及其全部分區的統計信息。最後,ALL關鍵字表示必須爲系統定義的全部塊設備和分區顯示統計信息,包括從未使用過的那些。若是在此選項以前定義了選項-j,則能夠使用所選的持久性名稱類型指定在命令行上輸入的設備。
-s 顯示應該適合80個字符寬屏幕的報告的短(窄)版本。
-t 打印顯示的每一個報告的時間。 時間戳格式可能取決於S_TIME_FORMAT環境變量的值(參見下文)。
-V 打印版本號而後退出。
-x 顯示擴展統計信息。
-y 若是以給定間隔顯示多個記錄,則在系統引導後忽略包含統計信息的第一個報告。
-z 告訴iostat省略在採樣期間沒有活動的任何設備的輸出。
EXAMPLES
iostat
Display a single history since boot report for all CPU and Devices.
iostat -d 2
Display a continuous device report at two second intervals.
iostat -d 2 6
Display six reports at two second intervals for all devices.
iostat -x sda sdb 2 6
Display six reports of extended statistics at two second intervals for devices sda and sdb.
iostat -p sda 2 6
Display six reports at two second intervals for device sda and all its partitions (sda1, etc.)
iostat -cd //default
iostat -h -g {sda10,sdb6,sdb7}
iostat -hx -g {sda10,sdb6,sdb7}
iostat -x {sda10,sdb6,sdb7}
pidstat 報告Linux任務的統計信息
pidstat命令用於監視當前由Linux內核管理的各個任務。
若是使用選項-p ALL,它會爲使用選項-p選擇的每一個任務或Linux內核管理的每一個任務寫入標準輸出活動。
不選擇任何任務等同於指定-p ALL,但只有活動任務(具備非零統計值的任務)纔會顯示在報告中。
interval參數指定每一個報告之間的時間量(以秒爲單位)。
值0(或根本沒有參數)表示自系統啓動(引導)以來報告任務統計信息的時間。
若是此參數未設置爲零,則能夠與interval參數一塊兒指定count參數。
count的值肯定以間隔秒間隔生成的報告數。
若是指定了interval參數而沒有count參數,則pidstat命令會連續生成報告。
您能夠使用標誌選擇有關特定任務活動的信息。 不指定任何標誌僅選擇CPU活動。
OPTIONS
-T { TASK | CHILD | ALL } 此選項指定pidstat命令必須監視的內容。
TASK關鍵字表示要爲各個任務報告統計信息(這是默認選項),
CHILD關鍵字表示要爲所選任務及其全部子任務全局報告統計信息。
ALL關鍵字表示要爲各個任務報告統計信息,併爲所選任務及其子任務全局報告統計信息。
注意:pidstat的全部選項都不能使用任務及其全部子項的全局統計信息。
此外,這些統計數據不必定與當前時間間隔相關:子進程的統計信息僅在完成或被殺死時收集。
-C comm 僅顯示其命令名稱包含字符串comm的任務。該字符串能夠是正則表達式。
--dec={ 0 | 1 | 2 } 指定要使用的小數位數(0到2,默認值爲2)。
-e program args 使用給定的參數args執行程序並使用pidstat監視它。當程序終止時,pidstat中止。
-G process_name 僅顯示其命令名稱包含字符串process_name的進程。該字符串能夠是正則表達式。若是選項-t與選項-G一塊兒使用,則還會顯示屬於該進程的線程(即便它們的命令名稱不包含字符串process_name)。
-H 顯示自紀元以來的秒數。
-h 在一行上水平顯示全部活動,報告末尾沒有平均統計信息。這旨在使其餘程序更容易解析。
--human 以人類可讀格式(例如1.0k,1.2M等)打印大小。使用此選項顯示的單位將取代與度量標準關聯的任何其餘默認單位(例如千字節,扇區......)。
-I 在SMP環境中,指示任務CPU使用率(由選項-u顯示)應除以處理器總數。
-l 顯示進程命令名稱及其全部參數。
-p { pid [,...] | SELF | ALL } 選擇要報告統計信息的任務(進程)。pid是進程標識號。SELF關鍵字表示要爲pidstat進程自己報告統計信息,而ALL關鍵字表示要爲系統管理的全部任務報告統計信息。
-U [ username ] 顯示正在監視的任務的實際用戶名,而不是UID。 若是指定了username,則僅顯示屬於指定用戶的任務。
-V 打印版本號而後退出。
-t 還顯示與所選任務關聯的線程的統計信息。 此選項將如下值添加到報告中:
- TGID 線程組領導者的標識號。
- TID 正在監視的線程的標識號。
-d 報告I/O統計信息(僅內核2.6.20及更高版本)。可能會顯示如下值:
- kB_rd/s 每秒從磁盤讀取任務所致使的千字節數。
- kB_wr/s 任務致使或將致使每秒寫入磁盤的千字節數
- kB_ccwr/s 寫入磁盤的任務已取消的千字節數。當任務截斷一些髒pagecache時,可能會發生這種狀況。在這種狀況下,將會發生一些已經考慮了另外一個任務的IO。
- iodelay 阻止正在監視的任務的I/O延遲,以時鐘週期測量。該指標包括等待同步塊I/O完成和swapin塊I/O完成所花費的延遲。
-R 報告實時優先級和調度策略信息。 可能會顯示如下值:
- prio 被監控任務的實時優先級。
- policy 正在監視的任務的調度策略。
-s 報告堆棧利用率。可能會顯示如下值:
- StkSize 以堆棧形式保留的任務的內存量(以千字節爲單位),但不必定使用。
- StkRef 做爲堆棧使用的以千字節爲單位的內存量,由任務引用。
-v 報告某些內核表的值。可能會顯示如下值:
- threads 與當前任務關聯的線程數。
- fd-nr 與當前任務關聯的文件描述符數。
-w 報告任務切換活動(僅內核2.6.23及更高版本)。可能會顯示如下值:
- cswch/s 每秒任務所作的自願上下文切換的總數。當任務阻塞時會發生自願上下文切換,由於它須要一個不可用的資源。
- nvcswch/s 每秒任務所作的非自願上下文切換的總數。當任務在其時間片的持續時間內執行時,發生非自願的上下文切換,而後被迫放棄處理器。
-r 報告頁面錯誤和內存利用率。 報告單個任務的統計信息時,可能會顯示如下值:
- minflt/s 每秒任務所產生的次要故障總數,即不須要從磁盤加載內存頁的故障總數。
- majflt/s 任務每秒發生的主要故障總數,即須要從磁盤加載內存頁面的主要故障總數。
- VSZ 虛擬大小:整個任務的虛擬內存使用量,以千字節爲單位。
- RSS 駐留集大小:任務使用的非交換物理內存,以千字節爲單位。
- %MEM 任務當前使用的可用物理內存份額。
-r -T CHILD 報告任務及其全部子項的全局統計信息時,可能會顯示如下值:
- minflt-nr 任務及其全部子項所產生的次要故障總數,並在該時間間隔內收集。
- majflt-nr 任務及其全部子項發生的主要故障總數,並在該時間間隔內收集。
-u 報告CPU利用率。報告單個任務的統計信息時,可能會顯示如下值:
- %usr 在用戶級別(應用程序)執行時任務使用的CPU百分比,有或沒有優先級。 請注意,此字段不包括運行虛擬處理器所花費的時間。
- %system 在系統級別(內核)執行時任務使用的CPU百分比。
- %guest 任務在虛擬機(運行虛擬處理器)中花費的CPU百分比。
- %wait 等待運行時任務花費的CPU百分比。
- %CPU 任務使用的CPU時間總百分比。在SMP環境中,若是在命令行中輸入了選項-I,則任務的CPU使用率將除以CPU的總數。
- CPU 任務附加到的處理器編號
-u -T CHILD 報告任務及其全部子項的全局統計信息時,可能會顯示如下值:
- usr-ms 在用戶級別(應用程序)執行時,任務及其全部子節點在有或沒有優先級的狀況下花費的總毫秒數,並在時間間隔內收集。請注意,此字段不包括運行虛擬處理器所花費的時間。
- system-ms 在系統級別(內核)執行時,任務及其全部子節點在該時間間隔內收集的總毫秒數。
- guest-ms 任務及其全部子節點在虛擬機(運行虛擬處理器)中花費的總毫秒數。
-u(CPU利用率), -r(頁面錯誤和內存利用率), -w(任務切換活動), -v(某些內核表的值), -s(堆棧利用率), -R(實時優先級和調度策略), -d(I/O統計), 都會有的字段:
- UID 正在監視的任務的真實用戶標識號。
- USER 擁有被監控任務的真實用戶的名稱。
- PID 正在監視的任務的標識號。
- Command 任務的命令名稱。
-u(CPU利用率), -r(頁面錯誤和內存利用率), 在包含子項[-T CHILD]時會有以下字段:
- UID 與其子項一塊兒監視的任務的真實用戶標識號。
- USER 擁有正在與其子節點一塊兒監視的任務的真實用戶的名稱。
- PID 與其子女一塊兒監控的任務的標識號。
- Command 正在與其子項一塊兒監視的任務的命令名稱。
EXAMPLES
pidstat 2 5
Display five reports of CPU statistics for every active task in the system at two second intervals.
pidstat -r -p 1643 2 5
Display five reports of page faults and memory statistics for PID 1643 at two second intervals.
pidstat -C "fox|bird" -r -p ALL
Display global page faults and memory statistics for all the processes whose command name includes the string "fox" or "bird".
pidstat -T CHILD -r 2 5
Display five reports of page faults statistics at two second intervals for the child processes of all tasks in the system.
Only child processes with non-zero statistics values are displayed.