Messages in this thread Patch in this message | | | From | Yang Jihong <> | Subject | [RFC 04/13] perf kwork: Add workqueue record support | Date | Mon, 13 Jun 2022 17:45:56 +0800 |
| |
Record workqueue events workqueue:workqueue_activate_work, workqueue:workqueue_execute_start & workqueue:workqueue_execute_end
Record all events:
# perf kwork record -o perf_kwork.date -- sleep 1 [ perf record: Woken up 0 times to write data ] [ perf record: Captured and wrote 0.839 MB perf_kwork.date ]
# perf evlist -i perf_kwork.date irq:irq_handler_entry irq:irq_handler_exit irq:softirq_raise irq:softirq_entry irq:softirq_exit workqueue:workqueue_activate_work workqueue:workqueue_execute_start workqueue:workqueue_execute_end dummy:HG
Record workqueue events:
# perf kwork -k workqueue record -o perf_kwork.date -- sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.080 MB perf_kwork.date ]
# perf evlist -i perf_kwork.date workqueue:workqueue_activate_work workqueue:workqueue_execute_start workqueue:workqueue_execute_end dummy:HG
Signed-off-by: Yang Jihong <yangjihong1@huawei.com> --- tools/perf/builtin-kwork.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
diff --git a/tools/perf/builtin-kwork.c b/tools/perf/builtin-kwork.c index 0da554e04f16..cda6fcbc6e41 100644 --- a/tools/perf/builtin-kwork.c +++ b/tools/perf/builtin-kwork.c @@ -27,6 +27,7 @@ enum kwork_class_type { KWORK_CLASS_IRQ, KWORK_CLASS_SOFTIRQ, + KWORK_CLASS_WORKQUEUE, KWORK_CLASS_MAX, }; @@ -93,9 +94,22 @@ static struct kwork_class kwork_softirq = { .tp_handlers = softirq_tp_handlers, }; +const struct evsel_str_handler workqueue_tp_handlers[] = { + { "workqueue:workqueue_activate_work", NULL, }, + { "workqueue:workqueue_execute_start", NULL, }, + { "workqueue:workqueue_execute_end", NULL, }, +}; + +static struct kwork_class kwork_workqueue = { + .name = "workqueue", + .nr_tracepoints = 3, + .tp_handlers = workqueue_tp_handlers, +}; + static struct kwork_class *kwork_class_supported_list[KWORK_CLASS_MAX] = { [KWORK_CLASS_IRQ] = &kwork_irq, [KWORK_CLASS_SOFTIRQ] = &kwork_softirq, + [KWORK_CLASS_WORKQUEUE] = &kwork_workqueue, }; static void setup_event_list(struct perf_kwork *kwork, -- 2.30.GIT
| |