加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

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

发布时间:2021-03-19 08:47:02 所属栏目:Linux 来源:网络整理
导读:我正在尝试测量特定进程在指定持续时间内对特定卷执行的磁盘写入和读取总量. 我找到了iotop,它可以每秒为特定进程输出IO,如下所示: iotop --batch --pid $(pidof my_process) 您可以在其中使用-n x指定x次迭代. 但是我必须过滤掉实际的数字,然后自己计算.

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

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

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读