如何解决linux perf:如何获得 IBS 支持?
我有一台运行 Linux 内核 4.19.71 的基于 AMD
Epyc 处理器的机器。我试图使用 IBS(基于指令的采样)事件运行一些性能调整,使用来自 perf
的 $linux/tools/perf
工具。根据我搜索的内容,应该可以将 -e ibs_fetch
或 -e ibs_op
参数传递给 perf
,但是我的似乎不接受它,声称为解析错误。另一方面,/sys/bus/event_source/devices
确实显示可用的 ibs_fetch
和 ibs_op
事件,这意味着硬件和内核都支持它。
可能必须使用一些选项编译 perf 才能获得 IBS 支持,或者我是否需要更高版本的 perf。
更新 1
更仔细地阅读 man perf-list
后,我意识到 PMU 需要在 PMU 名称后面加上“斜线”符号(感谢 @Hadi Brais 指出这一点)。但是:
% perf stat -a -e ibs_fetch// -I 1000
# time counts unit events
1.000171849 <not supported> ibs_fetch//
2.000326745 <not supported> ibs_fetch//
3.000526938 <not supported> ibs_fetch//
4.000753021 <not supported> ibs_fetch//
还有:
% perf record -a -e ibs_fetch// -p `pidof qemu-system-x86_64` -R
Warning:
PID/TID switch overriding SYSTEM
Error:
The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (ibs_fetch//).
/bin/dmesg | grep -i perf may provide additional information.
%
%
% /bin/dmesg | grep -i perf
[ 0.149465] Performance Events: Fam17h core perfctr,AMD PMU driver.
[ 10.523189] AMD-Vi: IOMMU performance counters supported
[ 10.529792] AMD-Vi: IOMMU performance counters supported
[ 10.535156] AMD-Vi: IOMMU performance counters supported
[ 10.540522] AMD-Vi: IOMMU performance counters supported
[ 11.241808] perf: AMD IBS detected (0x000003ff)
[ 11.246388] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks,4 counters/bank).
[ 11.253584] perf/amd_iommu: Detected AMD IOMMU #1 (2 banks,4 counters/bank).
[ 11.261628] perf/amd_iommu: Detected AMD IOMMU #2 (2 banks,4 counters/bank).
[ 11.268828] perf/amd_iommu: Detected AMD IOMMU #3 (2 banks,4 counters/bank).
[ 549.446621] perf: interrupt took too long (7809 > 2500),lowering kernel.perf_event_max_sample_rate to 25000
[ 1827.711752] INFO: NMI handler (perf_event_nmi_handler) took too long to run: 1.216 msecs
[ 2077.214530] perf: interrupt took too long (10051 > 9761),lowering kernel.perf_event_max_sample_rate to 19000
%
更新 2
% perf record -R -a -e ibs_fetch//pp sleep 1
..
%
% perf report -D --stdio --header
# ========
# captured on : Fri Jan 15 14:44:13 2021
# header version : 1
# data offset : 1256
# data size : 2666080
# feat offset : 2667336
# hostname : ESA-1
# os release : 4.19.71
# perf version :
# arch : x86_64
# nrcpus online : 128
# nrcpus avail : 128
# cpudesc : AMD EPYC 7702P 64-Core Processor
# cpuid : AuthenticAMD,23,49,0
# total memory : 528164320 kB
# cmdline : /usr/bin/perf record -R -a -e ibs_fetch//pp sleep 1
# event : name = ibs_fetch//pp,id = { 270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397 },type = 10,size = 112,{ sample_perio
d,sample_freq } = 4000,sample_type = IP|TID|TIME|CPU|PERIOD|RAW,read_format =
ID,disabled = 1,inherit = 1,mmap = 1,comm = 1,freq = 1,task = 1,precise_
ip = 2,sample_id_all = 1,comm_exec = 1
# CPU_TOPOLOGY info available,use -I to display
# NUMA_TOPOLOGY info available,use -I to display
# pmu mappings: amd_df = 8,software = 1,ibs_op = 11,amd_iommu_2 = 14,ibs_fet
ch = 10,uprobe = 7,cpu = 4,amd_iommu_0 = 12,breakpoint = 5,amd_l3 = 9,trac
epoint = 2,amd_iommu_3 = 15,kprobe = 6,amd_iommu_1 = 13,msr = 16
# CACHE info available,use -I to display
# time of first sample : 670.575018
# time of last sample : 671.580647
# sample duration : 1005.629 ms
# missing features: TRACING_DATA BRANCH_STACK GROUP_DESC AUXTRACE STAT MEM_TOPOL
OGY
# ========
#
...
<raw events dump>
...
Aggregated stats:
TOTAL events: 31423
MMAP events: 166
LOST events: 0
COMM events: 1663
EXIT events: 1
THROTTLE events: 92
UNTHROTTLE events: 2
FORK events: 1661
READ events: 0
SAMPLE events: 27512
MMAP2 events: 320
AUX events: 0
ITRACE_START events: 0
LOST_SAMPLES events: 0
SWITCH events: 0
SWITCH_CPU_WIDE events: 0
NAMESPACES events: 0
ATTR events: 0
EVENT_TYPE events: 0
TRACING_DATA events: 0
BUILD_ID events: 0
FINISHED_ROUND events: 3
ID_INDEX events: 0
AUXTRACE_INFO events: 0
AUXTRACE events: 0
AUXTRACE_ERROR events: 0
THREAD_MAP events: 1
CPU_MAP events: 1
STAT_CONFIG events: 0
STAT events: 0
STAT_ROUND events: 0
EVENT_UPDATE events: 0
TIME_CONV events: 1
FEATURE events: 0
ibs_fetch//pp stats:
TOTAL events: 27512
MMAP events: 0
LOST events: 0
COMM events: 0
EXIT events: 0
THROTTLE events: 0
UNTHROTTLE events: 0
FORK events: 0
READ events: 0
SAMPLE events: 27512
MMAP2 events: 0
AUX events: 0
ITRACE_START events: 0
LOST_SAMPLES events: 0
SWITCH events: 0
SWITCH_CPU_WIDE events: 0
NAMESPACES events: 0
ATTR events: 0
EVENT_TYPE events: 0
TRACING_DATA events: 0
BUILD_ID events: 0
FINISHED_ROUND events: 0
ID_INDEX events: 0
AUXTRACE_INFO events: 0
AUXTRACE events: 0
AUXTRACE_ERROR events: 0
THREAD_MAP events: 0
CPU_MAP events: 0
STAT_CONFIG events: 0
STAT events: 0
STAT_ROUND events: 0
EVENT_UPDATE events: 0
TIME_CONV events: 0
FEATURE events: 0
%
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。