Re: [PATCH bpf-next v6 05/14] selftests/bpf: adding read_perf_max_sample_freq() helper

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Oct 8, 2021 at 3:27 PM Andrii Nakryiko
<andrii.nakryiko@xxxxxxxxx> wrote:
>
> On Wed, Oct 6, 2021 at 11:56 AM Yucong Sun <fallentree@xxxxxx> wrote:
> >
> > From: Yucong Sun <sunyucong@xxxxxxxxx>
> >
> > This patch moved a helper function to test_progs and make all tests
> > setting sampling frequency use it to read current perf_max_sample_freq,
> > this will avoid triggering EINVAL error.
> >
> > Signed-off-by: Yucong Sun <sunyucong@xxxxxxxxx>
> > ---
> >  .../selftests/bpf/prog_tests/bpf_cookie.c     |  2 +-
> >  .../selftests/bpf/prog_tests/perf_branches.c  |  4 ++--
> >  .../selftests/bpf/prog_tests/perf_link.c      |  2 +-
> >  .../bpf/prog_tests/stacktrace_build_id_nmi.c  | 19 ++-----------------
> >  tools/testing/selftests/bpf/test_progs.c      | 15 +++++++++++++++
> >  tools/testing/selftests/bpf/test_progs.h      |  1 +
> >  6 files changed, 22 insertions(+), 21 deletions(-)
> >
>
> We have trace_helper.c, seems like it would be better to have it
> there? I haven't applied this patch yet.

I did look at that file, but the content was not really related, so
didn't go with it, of course we can :-D

>
> [...]
>
> > @@ -48,6 +31,8 @@ void test_stacktrace_build_id_nmi(void)
> >         if (CHECK(err, "skel_load", "skeleton load failed: %d\n", err))
> >                 goto cleanup;
> >
> > +       attr.sample_freq = read_perf_max_sample_freq();
> > +
> >         pmu_fd = syscall(__NR_perf_event_open, &attr, -1 /* pid */,
> >                          0 /* cpu 0 */, -1 /* group id */,
> >                          0 /* flags */);
> > diff --git a/tools/testing/selftests/bpf/test_progs.c b/tools/testing/selftests/bpf/test_progs.c
> > index 2ac922f8aa2c..66825313414b 100644
> > --- a/tools/testing/selftests/bpf/test_progs.c
> > +++ b/tools/testing/selftests/bpf/test_progs.c
> > @@ -1500,3 +1500,18 @@ int main(int argc, char **argv)
> >
> >         return env.fail_cnt ? EXIT_FAILURE : EXIT_SUCCESS;
> >  }
> > +
> > +__u64 read_perf_max_sample_freq(void)
> > +{
> > +       __u64 sample_freq = 1000; /* fallback to 1000 on error */
>
> previous default was 5000, message below still claims 5000, what's the
> The reason for changing it?

This is from my observation that on my machine it frequently dip down
to 3000,  the test doesn't really rely on 5000 either, they were fine
with 1000 even.

>
>
>
> > +       FILE *f;
> > +       __u32 duration = 0;
> > +
> > +       f = fopen("/proc/sys/kernel/perf_event_max_sample_rate", "r");
> > +       if (f == NULL)
> > +               return sample_freq;
> > +       CHECK(fscanf(f, "%llu", &sample_freq) != 1, "Get max sample rate",
> > +             "return default value: 5000,err %d\n", -errno);
> > +       fclose(f);
> > +       return sample_freq;
> > +}
> > diff --git a/tools/testing/selftests/bpf/test_progs.h b/tools/testing/selftests/bpf/test_progs.h
> > index b239dc9fcef0..d5ca0d36cc96 100644
> > --- a/tools/testing/selftests/bpf/test_progs.h
> > +++ b/tools/testing/selftests/bpf/test_progs.h
> > @@ -327,6 +327,7 @@ int extract_build_id(char *build_id, size_t size);
> >  int kern_sync_rcu(void);
> >  int trigger_module_test_read(int read_sz);
> >  int trigger_module_test_write(int write_sz);
> > +__u64 read_perf_max_sample_freq(void);
> >
> >  #ifdef __x86_64__
> >  #define SYS_NANOSLEEP_KPROBE_NAME "__x64_sys_nanosleep"
> > --
> > 2.30.2
> >



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux