【发布时间】:2015-03-24 19:11:48
【问题描述】:
我正在处理一个项目,我想在执行文件之前和之后获取系统调用(例如:read())的性能计数器(缓存、TLB 等)值。
我尝试在 Ubuntu 上使用 perf 执行此操作,但无法获得任何结果。有没有办法使用 perf 或其他工具来做到这一点?
感谢您的帮助。
3.329057 task-clock (msec) # 0.714 CPUs utilized
16 context-switches # 0.005 M/sec
0 cpu-migrations # 0.000 K/sec
257 page-faults # 0.077 M/sec
1,983,212 cycles # 0.596 GHz
1,352,902 stalled-cycles-frontend # 68.22% frontend cycles idle
1,080,180 stalled-cycles-backend # 54.47% backend cycles idle
1,336,919 instructions # 0.67 insns per cycle
# 1.01 stalled cycles per insn
267,730 branches # 80.422 M/sec
<not counted> branch-misses
0.004663489 seconds time elapsed
【问题讨论】:
-
请发布您尝试帮助我们了解问题所在的代码
-
1.你必须以
sudo运行 2. 你必须安装带有内核调试信息的 perf。您可能会看到[not supported ]安装不完整。 3. 尝试sudo perf stat -p [pid]并在此处添加您的结果。 -
我已经用代码编辑了上面的问题。这是“ls”的性能计数器统计数据
-
首先您必须从
perf list中找到性能事件,然后将其传递给perf stat。例如你从perf list中选择了-iTLB-loads然后查看ls命令perf stat -e iTLB-loads ls
标签: performance ubuntu operating-system system-calls perf