微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/linux/397912.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐