gpt4 book ai didi

linux - 测量进程的峰值磁盘使用

转载 作者:太空狗 更新时间:2023-10-29 11:17:35 26 4
gpt4 key购买 nike

我正在尝试从时间、内存和磁盘使用方面对我正在开发的工具进行基准测试。我知道/usr/bin/time基本上给出了前两个我想要的,但是对于磁盘使用,我得出的结论是我必须滚动我自己的 bash 脚本,该脚本定期从 /proc/<my_pid>/io 中提取“写入的字节”内容。 .基于此script ,这是我想出的:

"$@" &
pid=$!
status=$(ps -o rss -o vsz -o pid | grep $pid)
maxdisk=0
while [ "${#status}" -gt "0" ];
do
sleep 0.05
delta=false
disk=$(cat /proc/$pid/io | grep -P '^write_bytes:' | awk '{print $2}')
disk=$(disk/1024)
if [ "0$disk" -gt "0$maxdisk" ] 2>/dev/null; then
maxdisk=$disk
delta=true
fi
if $delta; then
echo disk: $disk
fi
status=$(ps -o rss -o vsz -o pid | grep $pid)
done
wait $pid
ret=$?
echo "maximal disk used: $maxdisk KB"

不幸的是,我遇到了两个问题:

  • 首先是我将此脚本的输出连同我想对文件进行基准测试的工具的输出通过管道传输,似乎这些流偶尔会干扰,导致我看到 0 或太低的磁盘使用率报告在此文件的底部。
  • 第二个问题是,我不知道如何处理删除临时文件作为其进程一部分的进程。在这种情况下,我认为公平的基准是记录最大 net 磁盘使用(即写入的字节峰值 - 删除的字节),但我不知道这种差异的第二部分在哪里可以找到。

如何解决这些问题?

最佳答案

您可能想看看 filetop来自 BCC - Tools for BPF-based Linux IO analysis, networking, monitoring, and more :

tools/filetop: File reads and writes by filename and process. Top for files.

This script works by tracing the vfs_read() and vfs_write() functions using kernel dynamic tracing, which instruments explicit read and write calls. If files are read or written using another means (eg, via mmap()), then they will not be visible using this tool.

Brendan Gregg 就 Linux Performance Tools, 进行了精彩的演讲和演示它们很有启发性。

关于linux - 测量进程的峰值磁盘使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41532561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com