All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] perf lock contention: Add more filter options (v1)
@ 2022-12-19 20:17 Namhyung Kim
  2022-12-19 20:17 ` [PATCH 1/6] perf lock contention: Factor out lock_type_table Namhyung Kim
                   ` (6 more replies)
  0 siblings, 7 replies; 10+ messages in thread
From: Namhyung Kim @ 2022-12-19 20:17 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Jiri Olsa
  Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
	linux-perf-users, Song Liu, Blake Jones, bpf

Hello,

This patchset adds a couple of filters to perf lock contention command.

The -Y/--type-filter is to filter by lock types like spinlock or mutex.

  $ sudo ./perf lock con -ab -Y spinlock -E 3 -- ./perf bench sched messaging
  # Running 'sched/messaging' benchmark:
  # 20 sender and receiver processes per group
  # 10 groups == 400 processes run

       Total time: 0.167 [sec]
   contended   total wait     max wait     avg wait         type   caller

          11    669.31 us    107.17 us     60.85 us     spinlock   remove_wait_queue+0x14
          10    586.85 us     87.62 us     58.68 us     spinlock   prepare_to_wait+0x27
         186    497.36 us     12.94 us      2.67 us     spinlock   try_to_wake_up+0x1f5

For the same workload, you can see the rwlock results only like below.

  $ sudo ./perf lock con -ab -Y rwlock -E 3 -- ./perf bench sched messaging
  # Running 'sched/messaging' benchmark:
  # 20 sender and receiver processes per group
  # 10 groups == 400 processes run

       Total time: 0.171 [sec]
   contended   total wait     max wait     avg wait         type   caller

          20    142.11 us     17.10 us      7.11 us     rwlock:W   do_exit+0x36d
           3     26.49 us     12.04 us      8.83 us     rwlock:W   release_task+0x6e
           5     12.46 us      5.12 us      2.49 us     rwlock:R   do_wait+0x8b

The -L/--lock-filter is to filter by lock address or name.  You can use
the existing -l/--lock-addr option to get the info.

  $ sudo ./perf lock con -abl -- ./perf bench sched messaging 2>&1 | grep tasklist_lock
          25     39.78 us     16.51 us      1.59 us   ffffffff9d006080   tasklist_lock

And use it with -L option like below.

  $ sudo ./perf lock con -ab -L tasklist_lock -- ./perf bench sched messaging 2>&1
  # Running 'sched/messaging' benchmark:
  # 20 sender and receiver processes per group
  # 10 groups == 400 processes run

       Total time: 0.174 [sec]
   contended   total wait     max wait     avg wait         type   caller

          22    227.18 us     24.16 us     10.33 us     rwlock:W   do_exit+0x36d
           3     26.12 us     18.03 us      8.71 us     rwlock:W   release_task+0x6e

Passing the address is supported too.

  $ sudo ./perf lock con -ab -L ffffffff9d006080 -- ./perf bench sched messaging 2>&1
  # Running 'sched/messaging' benchmark:
  # 20 sender and receiver processes per group
  # 10 groups == 400 processes run

       Total time: 0.190 [sec]
   contended   total wait     max wait     avg wait         type   caller

          28    276.62 us     16.90 us      9.88 us     rwlock:W   do_exit+0x36d
           4     22.36 us      7.04 us      5.59 us     rwlock:R   do_wait+0x8b
           2     10.51 us      5.38 us      5.25 us     rwlock:W   release_task+0x6e

You can get it from 'perf/lock-filter-v1' branch in

  git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git

Thanks,
Namhyung


Namhyung Kim (6):
  perf lock contention: Factor out lock_type_table
  perf lock contention: Add -Y/--type-filter option
  perf lock contention: Support lock type filtering for BPF
  perf lock contention: Add -L/--lock-filter option
  perf lock contention: Support lock addr/name filtering for BPF
  perf test: Update perf lock contention test

 tools/perf/Documentation/perf-lock.txt        |  27 +-
 tools/perf/builtin-lock.c                     | 305 ++++++++++++++++--
 tools/perf/tests/shell/lock_contention.sh     |  58 +++-
 tools/perf/util/bpf_lock_contention.c         |  55 +++-
 .../perf/util/bpf_skel/lock_contention.bpf.c  |  38 ++-
 tools/perf/util/lock-contention.h             |  10 +
 6 files changed, 451 insertions(+), 42 deletions(-)


base-commit: 51c4f2bf5397b34b79a6712221606e0ab2e6f7ed
-- 
2.39.0.314.g84b9a713c41-goog


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-12-21 17:55 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-19 20:17 [PATCH 0/6] perf lock contention: Add more filter options (v1) Namhyung Kim
2022-12-19 20:17 ` [PATCH 1/6] perf lock contention: Factor out lock_type_table Namhyung Kim
2022-12-19 20:17 ` [PATCH 2/6] perf lock contention: Add -Y/--type-filter option Namhyung Kim
2022-12-21 17:50   ` Arnaldo Carvalho de Melo
2022-12-21 17:54     ` Namhyung Kim
2022-12-19 20:17 ` [PATCH 3/6] perf lock contention: Support lock type filtering for BPF Namhyung Kim
2022-12-19 20:17 ` [PATCH 4/6] perf lock contention: Add -L/--lock-filter option Namhyung Kim
2022-12-19 20:17 ` [PATCH 5/6] perf lock contention: Support lock addr/name filtering for BPF Namhyung Kim
2022-12-19 20:17 ` [PATCH 6/6] perf test: Update perf lock contention test Namhyung Kim
2022-12-20 18:28 ` [PATCH 0/6] perf lock contention: Add more filter options (v1) Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.