一、iotop工具介紹
I/O可謂是數據庫\服務器的最大瓶頸問題了,在使用top、nmon、zabbix、sar等工具監控I/O時,要么沒有I/O監控(如top、zabbix),要么僅僅監控到磁盤層面(如nmon、sar)。然而,當服務器出現問題時,我們更想了解的是哪個進程占用了較多的I/O,這種情況下就可以使用iotop命令來監控。
redhat linux 5.5自帶了iotop工具,無需手動安裝。查看是否安裝了iotop工具:
[root@OCP ~]# which iotop /usr/sbin/iotop
如果要了解iotop如何使用,可以使用man命令:
[root@OCP ~]# man iotop
二、iotop工具用法
iotop [-選項]
選項有:
選項 | 解釋 | 示例 |
-o | 只顯示有I/O操作的進程或線程,即存在disk read或disk write。 | iotop -o |
-b | 批量顯示,無交互,主要用於記錄到文件 | iotop -b >> iotop.txt |
-n NUM | 顯示NUM次,主要用於非交互模式 | iotop -b -n 3 >> iotop.txt |
-d SEC | 間隔SEC秒更新一次數據,默認1s | iotop –d 5 |
-p PID | 列出監控的進程,默認全部 | iotop –p 3313(僅監控3313進程) |
-u USER | 列出需要監控的用戶,默認所有用戶 | iotop –u oracle |
略 |
iotop的快捷鍵:
左右箭頭:改變排序,默認按照IO使用百分比排序
r :反轉排序結果
o :只顯示有I/O的進程和線程
a :顯示累積使用量
q :退出
三、iotop工具展示
第一行是總的I/O統計信息,描述總的I/O讀寫情況。
第二行是列名稱,從左到右依次是:
TID :線程編號
PRIO :未知
USER:用戶信息
DISK READ :磁盤讀,以對用戶友好的方式顯示
DISK WRITE:磁盤寫,以對用戶友好的方式顯示
SWAPIN : swap空間使用百分比
IO> :IO使用百分比,“>”代表以IO排序,可以使用左右光標鍵調整使用哪一列來排序
COMMAND :進程發起程序名
四、iotop使用測試
(1)寫數據模擬
往數據庫插入大量數據測試,可以看到,此時lgwr進程與dbwn還有arch進程磁盤寫非常的高。但是無法看到用戶進程信息。
(2)讀數據模擬
對無索引的大表(2千萬行)進行查詢。SELECT * FROM lijiaman.t_iotop a WHERE a.t_name = 'M';
可以看到用戶進程消耗的IO非常的高,LOCAL=NO是oracle的直連用戶進程。
【完】