Linux

Linux 中的哪個程序可以隨時間測量 I/O?

  • October 13, 2009

我正在嘗試測量特定程序在指定持續時間內對特定卷完成的磁碟寫入和讀取總量。

我找到了 iotop,它可以每秒為特定程序輸出 IO,如下所示:

iotop --batch --pid $(pidof my_process)

您可以在其中指定 x 次迭代-n x

但是我必須過濾掉實際的數字,然後自己計算。

有沒有更簡單的方法來做到這一點?

不知道有一種更簡單的方法,但是這個 bash 片段可能會幫助您從 iotop 解析出您需要的內容:

iotop --batch --pid 1 > log
line_num=0
while read line; do 
   line_num=$(($line_n+1)) 
   if [[ $(($line_num % 3)) -eq 0 ]]; then 
       #print Column 3
       echo $line | awk '{print $3}'
   fi 
done < log > processed_file
#Get total of column three:
cat processed_file | (tr '\n' +; echo 0) | bc

實際上,每 x 秒可能更容易閱讀 /proc/$PID/io :

val=0
total=0
counter=0
pid=2323
while [[ $counter < 100 ]]; do 
   counter=$(($counter +1 ))
   #Change the sed number for different line, 5 is read_bytes
   val=$(cat /proc/$pid/io | sed -n '5p' | awk '{ print $2 }')
   total=$(($total + $val))
   echo $total 
   sleep 1 
done

實際上,上面的腳本看起來是錯誤的,因為它似乎/proc/<pid>/io只是總數,所以真的,只抓一次,等多久,再抓一次,找到不同之處,就有答案了。您可能想查看原始碼並找出它的數據類型,看看它是否最終會迴繞。不過,對於小型平板電腦來說可能不是問題。

引用自:https://serverfault.com/questions/72249