Re: [RFC 09/13] perf kwork: Add workqueue report support

From: Yang Jihong
Date: Wed Jun 15 2022 - 21:42:20 EST


Hello,

On 2022/6/16 5:56, Namhyung Kim wrote:
On Tue, Jun 14, 2022 at 8:22 PM Yang Jihong <yangjihong1@xxxxxxxxxx> wrote:

Hello,

On 2022/6/15 5:54, Namhyung Kim wrote:
On Mon, Jun 13, 2022 at 2:48 AM Yang Jihong <yangjihong1@xxxxxxxxxx> wrote:

Implements workqueue report function.

test case:

# perf kwork -k workqueue rep

Kwork Name | Cpu | Total Runtime | Frequency | Max runtime | Max runtime start | Max runtime end |
---------------------------------------------------------------------------------------------------------------------------
(w)0xffffffff83e09fa0 | 0001 | 2152.678 ms | 194 | 12.376 ms | 2059361.546621 s | 2059361.558997 s |
(w)0xffff888332fea180 | 0000 | 17.125 ms | 301 | 1.018 ms | 2059358.441070 s | 2059358.442089 s |
(w)0xffff8881035a83d8 | 0007 | 7.556 ms | 3 | 3.212 ms | 2059362.614643 s | 2059362.617855 s |
(w)0xffff888102fc14a0 | 0002 | 7.080 ms | 5 | 1.962 ms | 2059365.421753 s | 2059365.423714 s |
(w)0xffffffff82f7da00 | 0000 | 4.277 ms | 7 | 3.778 ms | 2059360.851063 s | 2059360.854841 s |
(w)0xffffffff8305d680 | 0006 | 1.796 ms | 1 | 1.796 ms | 2059360.046818 s | 2059360.048613 s |
(w)0xffff8883339e9040 | 0005 | 1.659 ms | 2 | 1.619 ms | 2059361.266051 s | 2059361.267670 s |
(w)0xffff888333de9040 | 0007 | 1.121 ms | 5 | 0.783 ms | 2059368.238059 s | 2059368.238842 s |
(w)0xffff888332fe9040 | 0000 | 0.990 ms | 4 | 0.911 ms | 2059359.604075 s | 2059359.604986 s |
(w)0xffff8883331e9040 | 0001 | 0.244 ms | 6 | 0.046 ms | 2059362.689277 s | 2059362.689323 s |
(w)0xffff888102e44400 | 0007 | 0.239 ms | 2 | 0.137 ms | 2059363.117537 s | 2059363.117674 s |
(w)0xffff8883333ea180 | 0002 | 0.141 ms | 5 | 0.049 ms | 2059365.423784 s | 2059365.423833 s |
(w)0xffffffff83062f28 | 0006 | 0.084 ms | 2 | 0.047 ms | 2059358.208033 s | 2059358.208080 s |
(w)0xffffffff8305ca48 | 0003 | 0.078 ms | 2 | 0.041 ms | 2059361.071371 s | 2059361.071412 s |
(w)0xffff8883337e9040 | 0004 | 0.062 ms | 1 | 0.062 ms | 2059362.605723 s | 2059362.605785 s |
(w)0xffff8881035a81e8 | 0001 | 0.056 ms | 1 | 0.056 ms | 2059363.118231 s | 2059363.118287 s |
(w)0xffff8883335e9040 | 0003 | 0.026 ms | 1 | 0.026 ms | 2059358.573397 s | 2059358.573423 s |
(w)0xffffffff83062e70 | 0006 | 0.023 ms | 1 | 0.023 ms | 2059368.398864 s | 2059368.398888 s |
(w)0xffffffff83e06480 | 0002 | 0.000 ms | 1 | 0.000 ms | 2059359.986792 s | 2059359.986792 s |

Using "function" in the tracepoint and symbolizing it would be
far more intuitive.

OK,This is a simplified version that will be improved in the next
version, and I'd like to add the following features:
1. Supports the kthread profile.

Could you elaborate more?
trace kthread tracepoints (sched:sched_kthread_work_queue_work, sched:
sched_kthread_work_execute_start and sched:sched_kthread_work_execute_end) can support kthread profile, because framework has been set up. we only need to add a new kthread class class.


2. Save runtime and latency in kernel using ebpf(similar to "perf
record: Implement off-cpu profiling with BPF") . This reduces the number
of interruptions caused by writing files to hard disks, which is closer
to the actual scenario.

Sounds great.
OK, I'll add it in next version.


This RFC is sent to discuss to see if this function is useful to the
community and can be accepted by the community. :)

Yeah I think it'd be useful.
Thanks for your affirmation.

Thanks,
Jihong