1. 程式人生 > 實用技巧 >Linux系統如何查詢磁碟I/O讀寫過高的程序?

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

首先,模擬磁碟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