From f08d79edb6b8f1d9ed486f98ba0695f60818316b Mon Sep 17 00:00:00 2001 From: zy Date: Thu, 14 Dec 2023 21:14:20 -0500 Subject: [PATCH] perf test --- source/module/monitor_perf.c | 60 ++++++++++++++++++------------------ source/ucli/ucli.cc | 1 + 2 files changed, 31 insertions(+), 30 deletions(-) diff --git a/source/module/monitor_perf.c b/source/module/monitor_perf.c index 76df6f3..b91b930 100644 --- a/source/module/monitor_perf.c +++ b/source/module/monitor_perf.c @@ -47,7 +47,7 @@ struct perf_event_attr pea = { .config = PERF_COUNT_SW_DUMMY, .sample_period = 1, .sample_type = PERF_SAMPLE_CALLCHAIN, - .disabled = 1, + // .disabled = 1, }; #include @@ -63,38 +63,38 @@ void setup_perf_event_for_task(struct task_struct *tsk) { pr_info("Perf event already created\n"); return; } - // int cpu; - // struct perf_event **events; - // for_each_possible_cpu(cpu) { - // struct perf_event **event = per_cpu_ptr(events, cpu); - // if (cpu_is_offline(cpu)) { - // pr_info("cpu %d is offline\n", cpu); - // *event = NULL; - // continue; - // } - // *event = perf_event_create_kernel_counter(&pea, cpu, tsk, - // vm_perf_overflow_callback, NULL); + int cpu; + struct perf_event **events; + for_each_possible_cpu(cpu) { + struct perf_event **event = per_cpu_ptr(events, cpu); + if (cpu_is_offline(cpu)) { + pr_info("cpu %d is offline\n", cpu); + *event = NULL; + continue; + } + *event = perf_event_create_kernel_counter(&pea, cpu, tsk, + vm_perf_overflow_callback, NULL); - // // perf_event_create_kernel_counter(&pea, cpu, tsk, - // // vm_perf_overflow_callback, - // // NULL); - // if (IS_ERR(*event)) { - // printk(KERN_INFO "create perf event failure\n"); - // // return -1; - // } - // // perf_event_enable(*event); - // } - - // pe = perf_event_create_kernel_counter(&pea, tsk->on_cpu, tsk, - // vm_perf_callback, NULL); - pe = perf_event_create_kernel_counter(&pea, -1, tsk, - vm_perf_overflow_callback, NULL); - if (IS_ERR(pe)) { - pr_info("Error in perf_event_create_kernel_counter\n"); - return; + // perf_event_create_kernel_counter(&pea, cpu, tsk, + // vm_perf_overflow_callback, + // NULL); + if (IS_ERR(*event)) { + printk(KERN_INFO "create perf event failure\n"); + // return -1; + } + // perf_event_enable(*event); } - perf_event_enable(pe); // enable perf event + // pe = perf_event_create_kernel_counter(&pea, tsk->on_cpu, tsk, + // vm_perf_overflow_callback, NULL); + // // pe = perf_event_create_kernel_counter(&pea, -1, tsk, + // // vm_perf_overflow_callback, NULL); + // if (IS_ERR(pe)) { + // pr_info("Error in perf_event_create_kernel_counter\n"); + // return; + // } + + // perf_event_enable(pe); // enable perf event } /** diff --git a/source/ucli/ucli.cc b/source/ucli/ucli.cc index fa26448..26ff444 100644 --- a/source/ucli/ucli.cc +++ b/source/ucli/ucli.cc @@ -83,6 +83,7 @@ static int task_info_extract(void *buf, unsigned int len, void *) { diag_printf_kern_stack(&tsk_info_system->kern_stack); printf("#* 0xffffffffffffff %s (UNKNOWN)\n", tsk_info_system->task.comm); + diag_printf_proc_chains(&tsk_info->proc_chains); printf("##\n"); break;