Thread (32 messages) 32 messages, 5 authors, 2020-09-12

Re: [PATCH v2 2/5] perf record: Prevent override of attr->sample_period for libpfm4 events

From: Ian Rogers <irogers@google.com>
Date: 2020-09-12 03:03:06
Also in: bpf, lkml

On Fri, Sep 11, 2020 at 3:34 PM Ian Rogers [off-list ref] wrote:
On Fri, Sep 4, 2020 at 11:51 AM Arnaldo Carvalho de Melo
[off-list ref] wrote:
quoted
Em Fri, Sep 04, 2020 at 03:50:13PM -0300, Arnaldo Carvalho de Melo escreveu:
quoted
Em Fri, Sep 04, 2020 at 03:48:03PM -0300, Arnaldo Carvalho de Melo escreveu:
quoted
Em Fri, Sep 04, 2020 at 09:22:10AM -0700, Ian Rogers escreveu:
quoted
On Fri, Sep 4, 2020 at 9:03 AM Jiri Olsa [off-list ref] wrote:
quoted
On Thu, Sep 03, 2020 at 10:41:14PM -0700, Ian Rogers wrote:
quoted
On Wed, Jul 29, 2020 at 4:24 PM Ian Rogers [off-list ref] wrote:
quoted
On Tue, Jul 28, 2020 at 9:10 AM Jiri Olsa [off-list ref] wrote:
quoted
On Tue, Jul 28, 2020 at 05:59:46PM +0200, Jiri Olsa wrote:
quoted
On Tue, Jul 28, 2020 at 01:57:31AM -0700, Ian Rogers wrote:
[jolsa@krava perf]$ sudo ./perf test 17 -v
17: Setup struct perf_event_attr                          :
quoted
quoted
quoted
quoted
quoted
running './tests/attr/test-record-C0'
expected sample_period=4000, got 3000
FAILED './tests/attr/test-record-C0' - match failure
quoted
quoted
quoted
quoted
I'm not able to reproduce this. Do you have a build configuration or
something else to look at? The test doesn't seem obviously connected
with this patch.
quoted
quoted
quoted
Jiri, any update? Thanks,
quoted
quoted
sorry, I rebased and ran it again and it passes for me now,
so it got fixed along the way
quoted
No worries, thanks for the update! It'd be nice to land this and the
other libpfm fixes.
I applied it and it generated this regression:

FAILED '/home/acme/libexec/perf-core/tests/attr/test-record-pfm-period' - match failure

I'll look at the other patches that are pending in this regard to see
what needs to be squashed so that we don't break bisect.
So, more context:

running '/home/acme/libexec/perf-core/tests/attr/test-record-pfm-period'
expected exclude_hv=0, got 1
FAILED '/home/acme/libexec/perf-core/tests/attr/test-record-pfm-period' - match failure
test child finished with -1
---- end ----
Setup struct perf_event_attr: FAILED!
[root@five ~]#

Ian, can you take a look at this?
Further tests I've performed:

    Committer testing:

    Not linking with libpfm:

      # ldd ~/bin/perf | grep libpfm
      #

    Before:

      # perf record -c 10000 -e cycles/period=12345/,instructions sleep 0.0001
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.052 MB perf.data (258 samples) ]
      # perf evlist -v
      cycles/period=12345/: size: 120, { sample_period, sample_freq }: 12345, sample_type: IP|TID|TIME|ID, read_format: ID, disabled: 1, inherit: 1, mmap: 1, comm: 1, enable_on_exec: 1, task: 1, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1
      instructions: size: 120, config: 0x1, { sample_period, sample_freq }: 10000, sample_type: IP|TID|TIME|ID, read_format: ID, disabled: 1, inherit: 1, enable_on_exec: 1, sample_id_all: 1, exclude_guest: 1
      #

    After:

      #
      # perf record -c 10000 -e cycles/period=12345/,instructions sleep 0.0001
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.053 MB perf.data (284 samples) ]
      # perf evlist -v
      cycles/period=12345/: size: 120, { sample_period, sample_freq }: 12345, sample_type: IP|TID|TIME|ID, read_format: ID, disabled: 1, inherit: 1, mmap: 1, comm: 1, enable_on_exec: 1, task: 1, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1
      instructions: size: 120, config: 0x1, { sample_period, sample_freq }: 10000, sample_type: IP|TID|TIME|ID, read_format: ID, disabled: 1, inherit: 1, enable_on_exec: 1, sample_id_all: 1, exclude_guest: 1
      #

    Linking with libpfm:

      # ldd ~/bin/perf | grep libpfm
            libpfm.so.4 => /lib64/libpfm.so.4 (0x00007f54c7d75000)
      #

      # perf record -c 10000 --pfm-events=cycles:period=77777 sleep 1
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.043 MB perf.data (141 samples) ]
      # perf evlist -v
      cycles:period=77777: size: 120, { sample_period, sample_freq }: 10000, sample_type: IP|TID|TIME, read_format: ID, disabled: 1, inherit: 1, exclude_hv: 1, mmap: 1, comm: 1, enable_on_exec: 1, task: 1, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1
      #

    After:

      # perf record -c 10000 --pfm-events=cycles:period=77777 sleep 1
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.039 MB perf.data (19 samples) ]
      # perf evlist -v
      cycles:period=77777: size: 120, { sample_period, sample_freq }: 77777, sample_type: IP|TID|TIME, read_format: ID, disabled: 1, inherit: 1, exclude_hv: 1, mmap: 1, comm: 1, enable_on_exec: 1, task: 1, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1
      #
Hi Arnaldo,

I've been trying to reproduce the test failure you mention and I've
not been able to. This follow up e-mail seems to show things working
as intended. Did the issue resolve itself?
It looks like the test to ensure the period for pfm events worked:
https://lore.kernel.org/lkml/20200728124539.GB40195@kernel.org/ (local)
has been applied without the fixes in patches 1 and 2. I've resent the
patches, hopefully addressing all feedback.
https://lore.kernel.org/lkml/20200912025655.1337192-1-irogers@google.com/ (local)

Thanks,
Ian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help