diff options
author | Changwoo Min <changwoo@igalia.com> | 2025-02-04 14:20:56 +0900 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2025-02-04 10:36:47 -1000 |
commit | 6df93804b718ec9741f056dae777f12332d54002 (patch) | |
tree | 0420edf70e8bcded59ae88946b84dc7f5c595974 | |
parent | 9865f31d852a40e39b8efb8feec69182e1002489 (diff) |
sched_ext: Print core event count in scx_central scheduler
Modify the scx_central scheduler to print the core event counter
every second.
Signed-off-by: Changwoo Min <changwoo@igalia.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
-rw-r--r-- | tools/sched_ext/scx_central.bpf.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/sched_ext/scx_central.bpf.c b/tools/sched_ext/scx_central.bpf.c index 50bc1737c167..376c14d5dd0d 100644 --- a/tools/sched_ext/scx_central.bpf.c +++ b/tools/sched_ext/scx_central.bpf.c @@ -256,6 +256,7 @@ static int central_timerfn(void *map, int *key, struct bpf_timer *timer) u64 now = scx_bpf_now(); u64 nr_to_kick = nr_queued; s32 i, curr_cpu; + struct scx_event_stats events; curr_cpu = bpf_get_smp_processor_id(); if (timer_pinned && (curr_cpu != central_cpu)) { @@ -291,6 +292,26 @@ static int central_timerfn(void *map, int *key, struct bpf_timer *timer) bpf_timer_start(timer, TIMER_INTERVAL_NS, BPF_F_TIMER_CPU_PIN); __sync_fetch_and_add(&nr_timers, 1); + + /* print event counters every second */ + if (nr_timers % 1000 == 0) { + scx_bpf_events(&events, sizeof(events)); + + bpf_printk("%35s: %llu\n", "SCX_EV_SELECT_CPU_FALLBACK", + scx_read_event(&events, SCX_EV_SELECT_CPU_FALLBACK)); + bpf_printk("%35s: %llu\n", "SCX_EV_DISPATCH_LOCAL_DSQ_OFFLINE", + scx_read_event(&events, SCX_EV_DISPATCH_LOCAL_DSQ_OFFLINE)); + bpf_printk("%35s: %llu\n", "SCX_EV_DISPATCH_KEEP_LAST", + scx_read_event(&events, SCX_EV_DISPATCH_KEEP_LAST)); + bpf_printk("%35s: %llu\n", "SCX_EV_ENQ_SKIP_EXITING", + scx_read_event(&events, SCX_EV_ENQ_SKIP_EXITING)); + bpf_printk("%35s: %llu\n", "SCX_EV_BYPASS_DURATION", + scx_read_event(&events, SCX_EV_BYPASS_DURATION)); + bpf_printk("%35s: %llu\n", "SCX_EV_BYPASS_DISPATCH", + scx_read_event(&events, SCX_EV_BYPASS_DISPATCH)); + bpf_printk("%35s: %llu\n", "SCX_EV_BYPASS_ACTIVATE", + scx_read_event(&events, SCX_EV_BYPASS_ACTIVATE)); + } return 0; } |