Linux系統如何查詢磁碟I/O讀寫過高的程序?
阿新 • • 發佈:2020-11-06
首先,模擬磁碟I/O讀寫高的情況
# 拷貝大檔案進行測試
[root@proxy1 ~]# \cp -rp /mnt/cdrom/ /tmp/
1、通過"iostat -x 1 10"命令檢視相關磁碟使用資訊
表示每隔1秒重新整理一次,重新整理10次
如果沒有iostat命令,使用yum -y install sysstat
安裝
由圖可知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
命令進行安裝
通過這個命令可以看見比較詳細的資訊,如:程序號、磁碟讀取量、磁碟寫入量、I/O百分比,以及命令等;
3、通過"pidstat"命令
命令的含義:展示I/O統計,每秒更新一次;
pidstat -d 1