Linux中的哪个程序可以随时测量I / O?

我正在尝试测量特定进程在指定持续时间内对特定卷执行的磁盘写入和读取总量.

我找到了iotop,它可以每秒为特定进程输出IO,如下所示:

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

您可以在其中使用-n x指定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只是总数,所以真的,只需抓住一次,等待多久,再次抓住它,找到差异并且有你的答案.您可能希望查看源代码并找出其数据类型,以查看它是否最终包含在内.虽然可能不是一个小平板电脑的问题.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...