Dar*_*ark 5 memory linux cache perf
我想在我的脚本完整运行期间计算磁盘访问次数。我的 bash 脚本在本地运行另外 2 个可执行文件和远程运行另外 2 个可执行文件。像这样(那些可执行文件本身可以访问其他工具):
#!/bin/bash
./executable1 DATA1 &
./executable2 DATA2 &
ssh remote_host './executable3 DATA3' &
ssh remote_host './executable4 DATA4' &
wait;
Run Code Online (Sandbox Code Playgroud)
现在我正在运行我的 bash 脚本,perf
如下所示:
perf stat -e page-faults,page-faults:u ./myBashScript.sh
Run Code Online (Sandbox Code Playgroud)
但结果总是相同的,无论我是否更改 DATA* 文件、命令、命令数量,......像这样:
128,470 page-faults
127,641 page-faults:u
Run Code Online (Sandbox Code Playgroud)
现在我的问题是“如何计算整个脚本的磁盘访问次数?”
附:
perf
Linux 工具 ( ) 中的工具中的页面错误perf_events
适用于次要页面错误和主要页面错误。较小的页面错误不适用于磁盘访问。并不是每个主要页面错误都是针对磁盘访问的(仅是磁盘文件被mmap
编辑)。并且磁盘读/写访问不会产生任何页面错误。
一些通用的页面错误计数解决方案位于/sf/ask/1631193441/。
要统计全局磁盘访问次数,请使用iostat
工具http://man7.org/linux/man-pages/man1/iostat.1.html (tps、r/s、w/s) 或vmstat
工具http://man7.org/linux /man-pages/man8/vmstat.8.html(bo、bi、-d
)。两者都与以秒为单位的句点一起使用,例如iostat 1
或vmstat 1
每秒打印一组活动,直到被 ctrl-c 杀死;或类似iostat 1 60
或vmstat 1 60
每秒打印 1 分钟并退出。
其他解决方案是结合使用perf
工具和来自 i/o 或磁盘子系统的一些特定事件。Gregg 在http://www.brendangregg.com/perf.html和https://github.com/brendangregg/perf-tools提供了一些高级 perf 使用示例。
他的iosnoop工具http://www.brendangregg.com/blog/2014-07-16/iosnoop-for-linux.html和http://www.brendangregg.com/blog/2014-07-23/linux-iosnoop -latency-heat-maps.html(基于perf)可以通过进程pid、磁盘id、偏移量和io大小来跟踪磁盘i/o,并且它还将测量磁盘访问的延迟。
另请查看http://www.brendangregg.com/perf.html的“7.2. 热图”
我使用 perf_events 记录块请求(磁盘 I/O)问题和完成静态跟踪点:
Run Code Online (Sandbox Code Playgroud)# perf record -e block:block_rq_issue -e block:block_rq_complete -a sleep 120
归档时间: |
|
查看次数: |
2484 次 |
最近记录: |