Messages in this thread | | | Date | Wed, 16 Mar 2022 16:46:56 +0530 | Subject | Re: [PATCH v6 10/12] perf tools: Improve IBS error handling | From | Ravi Bangoria <> |
| |
On 16-Mar-22 4:37 PM, Ravi Bangoria wrote: > Stephane, > > On 16-Mar-22 5:33 AM, Stephane Eranian wrote: >> On Tue, Mar 15, 2022 at 12:46 AM Ravi Bangoria <ravi.bangoria@amd.com> wrote: >>> >>> Stephane, >>> >>> On 09-Feb-22 2:46 AM, Stephane Eranian wrote: >>>> From: Kim Phillips <kim.phillips@amd.com> >>>> >>>> improve the error message returned on failed perf_event_open() on AMD when >>>> using IBS. >>>> >>>> Output of executing 'perf record -e ibs_op// true' BEFORE this patch: >>>> >>>> The sys_perf_event_open() syscall returned with 22 (Invalid argument)for event (ibs_op//u). >>>> /bin/dmesg | grep -i perf may provide additional information. >>>> >>>> Output after: >>>> >>>> AMD IBS cannot exclude kernel events. Try running at a higher privilege level. >>>> >>>> Output of executing 'sudo perf record -e ibs_op// true' BEFORE this patch: >>>> >>>> Error: >>>> The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (ibs_op//). >>>> /bin/dmesg | grep -i perf may provide additional information. >>>> >>>> Output after: >>>> >>>> Error: >>>> AMD IBS may only be available in system-wide/per-cpu mode. Try using -a, or -C and workload affinity >>> >>> This patch seems to be causing regression to perf python test. >>> >>> Without this patch: >>> >>> $ sudo ./perf test -vvv 19 >>> 19: 'import perf' in python : >>> --- start --- >>> test child forked, pid 145391 >>> python usage test: "echo "import sys ; sys.path.append('python'); import perf" | '/usr/bin/python2' " >>> test child finished with 0 >>> ---- end ---- >>> 'import perf' in python: Ok >>> >>> With this patch: >>> >>> $ sudo ./perf test -vvv 19 >>> 19: 'import perf' in python : >>> --- start --- >>> test child forked, pid 144415 >>> python usage test: "echo "import sys ; sys.path.append('python'); import perf" | '/usr/bin/python2' " >>> Traceback (most recent call last): >>> File "<stdin>", line 1, in <module> >>> ImportError: python/perf.so: undefined symbol: perf_env__cpuid >>> test child finished with -1 >>> ---- end ---- >>> 'import perf' in python: FAILED! >>> >> >> The fix I sent you is just to prevent a potential SEGFAULT in >> is_amd_ibs(). I bet the test fails some perf_event_open() >> and ends up in strerror function and from there I don't see how the >> patch could impact the test, given you'd segfault >> otherwise. >> >> I tried on my side and with or without this patch this test fails. I >> think this looks like an unrelated issue. > > That's strange. IIUC, python/perf.so needs to know about util/evsel.c
I meant util/env.c not util/evsel.c
> which can be done by adding an entry in util/python-ext-sources. > > In any case, do we really need this patch now? For both the example given > in description, I see no difference with or without patch: > > Without patch: > > $ sudo ./perf record -e ibs_op// true > Error: > Invalid event (ibs_op//) in per-thread mode, enable system wide with '-a'. > > $ ./perf record -e ibs_op// true > Error: > Invalid event (ibs_op//u) in per-thread mode, enable system wide with '-a'. > > Same o/p with the patch as well. > > Thanks, > Ravi
| |