如何解决如何使用 perf 定期采样缓存未命中率?
我想使用 perf
工具定期对流程进行采样,以获取其 cache miss rate
的分布图。例如,我有一个进程 ID 为 1822
的进程。我想每 0.01 秒获得它的 l1 dcach miss rate
。我使用以下命令:
perf record -p 1822 -e L1-dcache-loads,L1-dcache-load-misses -F100 sleep 5
警告:内核地址映射 (/proc/{kallsyms,modules}) 受到限制, 检查 /proc/sys/kernel/kptr_restrict。
如果有合适的 vmlinux,内核函数中的示例可能无法解析 在 buildid 缓存或 vmlinux 路径中找不到该文件。
内核模块中的示例根本无法解析。
如果应用了一些重定位(例如 kexec)符号可能会被错误解析 即使使用合适的 vmlinux 或 kallsyms 文件。
Couldn't record kernel reference relocation symbol
Symbol resolution may be skewed if relocation was used (e.g. kexec).
Check /proc/kallsyms permission or run as root.
[ perf record: Woken up 1 times to write data ]
[kernel.kallsyms] with build id d3868f47b8075446dac529f92701d0eac6c38c67 not found,continuing without symbols
[ perf record: Captured and wrote 0.061 MB perf.data (1248 samples) ]
此问题发生在操作过程中。这应该允许我拥有 root 权限。但我仍然看到 perf.data
文件。我使用perf record
Available samples
865 L1-dcache-loads ◆
180 L1-dcache-load-misses ▒
0 l2_rqsts.all_demand_data_rd ▒
0 l2_rqsts.all_demand_miss ▒
181 LLC-loads ▒
39 LLC-load-misses
我想同时对两个过程进行采样。我想每 0.1 秒获得一次缓存未命中率。我测了5秒,每个进程应该输出50个采样结果。
但是当我使用-p pid1 pid2时,会出现错误。 而且无论我怎么改,他都只会显示一次结果。我应该怎么办? 或者如果我能在 5 秒内得到缓存未命中率分布的连续图,那就更好了。 谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。