运行perf stat ls
显示:
Performance counter stats for 'ls':
1.388670 task-clock # 0.067 CPUs utilized
2 context-switches # 0.001 M/sec
0 cpu-migrations # 0.000 K/sec
266 page-faults # 0.192 M/sec
3515391 cycles # 2.531 GHz
2096636 stalled-cycles-frontend # 59.64% frontend cycles idle
<not supported> stalled-cycles-backend
2927468 instructions # 0.83 insns per cycle
# 0.72 stalled cycles per insn
615636 branches # 443.328 M/sec
22172 branch-misses # 3.60% of all branches
0.020657192 seconds time elapsed
为什么stalled-cycles-backend显示为“不支持”?我需要什么样的 CPU、硬件、内核或用户空间软件才能看到这个值?
目前在 RHEL 上使用 Linux 3.12 for x86_64(具有匹配perf
版本)在不同的 Intel Core i5 和 i7 系统(Ivy Bridge 类型)上进行了尝试。他们都不支持stalled-cycles-backend。
更多信息:
$ perf list | grep stalled
stalled-cycles-frontend OR idle-cycles-frontend [Hardware event]
stalled-cycles-frontend OR cpu/stalled-cycles-frontend/ [Kernel PMU event]
$ ls /sys/devices/cpu/events/
branch-instructions bus-cycles cache-references instructions mem-stores
branch-misses cache-misses cpu-cycles mem-loads stalled-cycles-frontend
$ cat /sys/bus/event_source/devices/cpu/events/stalled-cycles-frontend
event=0x0e,umask=0x01,inv,cmask=0x01
编辑:刚刚在带有 Linux 3.2(32 位)的 Ubuntu 12.04 下的 AMD Phenom II X6 1045T CPU 上尝试过这个——它确实显示了stalled-cycles-frontend和stalled-cycles-backend 的值。