From 05d78776ad73e8c8916f8d45ba4d19a74cde231e Mon Sep 17 00:00:00 2001 From: zy Date: Thu, 14 Dec 2023 21:46:11 -0500 Subject: [PATCH] vm_perf_overflow_callback have meassage --- source/module/monitor_perf.c | 59 ++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/source/module/monitor_perf.c b/source/module/monitor_perf.c index b91b930..63e4bb8 100644 --- a/source/module/monitor_perf.c +++ b/source/module/monitor_perf.c @@ -44,10 +44,10 @@ void vm_perf_overflow_callback(struct perf_event *event, struct perf_event_attr pea = { .type = PERF_TYPE_SOFTWARE, .size = sizeof(struct perf_event_attr), - .config = PERF_COUNT_SW_DUMMY, + .config = PERF_COUNT_SW_CPU_CLOCK, .sample_period = 1, .sample_type = PERF_SAMPLE_CALLCHAIN, - // .disabled = 1, + .disabled = 1, }; #include @@ -63,38 +63,39 @@ 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); - } + // // 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_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; - // } + 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 + perf_event_enable(pe); // enable perf event } /**