如何解决如何计算mmap-ed内存中的高速缓存未命中使用eBPF?
我想获取时间序列
t0,misses
...
tN,misses
其中tN
是时间戳(秒分辨率),misses
是内核为我的PID制作磁盘IO以加载mmap()
版的缺少页面的次数进程访问该内存时的内存区域。好的,也许磁盘IO和内存访问之间的连接更难跟踪,让我们假设我的程序无法使用其他原因(而不是评估丢失的映射内存)来做任何磁盘。我想,我需要在性能世界中追踪一个叫做node-load-misses
的东西。
有什么想法可以使用eBPF收集此类数据吗?我应该使用哪些探针?
试图将perf record
用于类似目的:我不喜欢perf记录的数据量。我记得尝试是这样的(也我不记得我是如何解析那个output.data文件的):
perf record -p $PID -a -F 10 -e node-loads -e node-load-misses -o output.data
我认为eBPF可以提供一些设施,以较少的开销来实现这种事情。
解决方法
加载内存中不存在的mmaped页面不是硬件事件,例如perf的cache-misses
或node-loads
或node-load-misses
。当您的程序评估为不存在内存地址时,GPFault / pagefault异常由硬件生成,并且由Linux内核代码在软件中处理。对于首次访问匿名内存,将为该虚拟地址分配并映射物理页面;将启动用于访问mmaped文件磁盘的I / O。 linux中有两种页面错误:次要页面错误和主要页面错误,而磁盘I / O是主要页面错误。
您应尝试使用trace-cmd或ftrace或perf跟踪。错误跟踪was planned for perf tool in 2012和补丁的支持在https://lwn.net/Articles/602658/
中提出在用户空间代码中有一个页面错误的跟踪点,此命令将打印一些事件,这些事件的内存地址为页面错误:
echo 2^123456%2 | perf trace -e 'exceptions:page_fault_user' bc
使用最新的性能工具(https://mirrors.edge.kernel.org/pub/linux/kernel/tools/perf/),perf trace record
可以将mmap syscall和page_fault_user都记录到perf.data中,perf script
将打印所有事件,并且某些事件可以将它们计数awk或python脚本。
一些关于性能和跟踪的有用链接:http://www.brendangregg.com/perf.html http://www.brendangregg.com/ebpf.html https://github.com/iovisor/bpftrace/blob/master/INSTALL.md 并且某些密件抄送工具可用于跟踪磁盘I / O,例如https://github.com/iovisor/bcc/blob/master/examples/tracing/disksnoop.py或https://github.com/brendangregg/perf-tools/blob/master/examples/iosnoop_example.txt
对于简单的时间序列统计,您可以将perf stat -I 1000
命令用于正确的软件事件
perf stat -e cpu-clock,page-faults,minor-faults,major-faults -I 1000 ./program
...
# time counts unit events
1.000112251 413.59 msec cpu-clock # 0.414 CPUs utilized
1.000112251 5,361 page-faults # 0.013 M/sec
1.000112251 5,301 minor-faults # 0.013 M/sec
1.000112251 60 major-faults # 0.145 K/sec
2.000490561 16.32 msec cpu-clock # 0.016 CPUs utilized
2.000490561 1 page-faults # 0.005 K/sec
2.000490561 1 minor-faults # 0.005 K/sec
2.000490561 0 major-faults # 0.000 K/sec
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。