天天看點

Linux系統如何查找磁盤I/O讀寫過高的程序?

首先,模拟磁盤I/O讀寫高的情況

# 拷貝大檔案進行測試
[root@proxy1 ~]# \cp -rp /mnt/cdrom/ /tmp/           

1、通過"iostat -x 1 10"指令檢視相關磁盤使用資訊

表示每隔1秒重新整理一次,重新整理10次

如果沒有iostat指令,使用

yum -y install sysstat

安裝

Linux系統如何查找磁盤I/O讀寫過高的程式?

由圖可知scd0也就是被拷貝的磁盤的

%util

幾乎超過了100%,原因就是頻繁的讀取資料造成的;

字段說明

Device    # 裝置名稱
tps        # 每秒的IO讀、寫請求數量,多個邏輯請求可以組合對裝置的單個I/O請求;
Blk_read/s    #從裝置讀取的資料量,以每秒若幹塊(千位元組、兆位元組)表示;塊相當于扇區,塊大小為512位元組
Blk_wrtn/s    #寫入裝置的資料量,以每秒若幹塊表示;
Blk_read    #讀取塊的總數(千位元組、兆位元組)
Blk_wrtn    #寫入塊的總數(千位元組、兆位元組)

rrqm/s        #每秒合并到裝置的讀請求數;
wrqm/s        #每秒合并到裝置的寫入請求數;
r/s            #每秒完成的讀I/O裝置次數;
w/s            #每秒完成的寫I/O裝置次數;
rsec/s(rkB/s,rMB/s)        #每秒讀取裝置的扇區數,每扇區大小為512位元組;
wsec/s(wkB/s,wMB/s)        #每秒寫入裝置的扇區數,每扇區大小為512位元組;

avgrq-sz    #平均每次裝置I/O操作的資料量(扇區為機關);
abgqu-sz    #平均每次發送給裝置的I/O隊列長度
await        #平均每次I/O請求等待時間(包括等待隊列時間和處理時間,毫秒為機關)
r_await        #平均每次I/O讀請求等待時間;
w_await        #平均每次I/O寫請求等待時間;
svctm        #平均每次裝置I/O操作的處理時間(毫秒);
%util        #一秒中有百分之多少的時間用于I/O操作,當該值接近100%,裝置飽和發生;           

2、通過"iotop"指令

如果沒有該指令,使用

yum -y install iotop

指令進行安裝

Linux系統如何查找磁盤I/O讀寫過高的程式?

通過這個指令可以看見比較詳細的資訊,如:程序号、磁盤讀取量、磁盤寫入量、I/O百分比,以及指令等;

3、通過"pidstat"指令

指令的含義:展示I/O統計,每秒更新一次;

pidstat -d 1           
Linux系統如何查找磁盤I/O讀寫過高的程式?

繼續閱讀