Re: [PATCH v3 12/17] sched: Adapt sched tracepoints for RV task model
From: Gabriele Monaco <gmonaco@redhat.com>
Date: 2025-07-16 13:40:23
Also in:
lkml
On Wed, 2025-07-16 at 14:38 +0200, Peter Zijlstra wrote:
On Tue, Jul 15, 2025 at 09:14:29AM +0200, Gabriele Monaco wrote:quoted
Add the following tracepoints: * sched_set_need_resched(tsk, cpu, tif) Called when a task is set the need resched [lazy] flag * sched_switch_vain(preempt, tsk, tsk_state) Called when a task is selected again during __schedule i.e. prev == next == tsk : no real context switchquoted
@@ -6592,6 +6598,7 @@ static bool try_to_block_task(struct rq *rq,struct task_struct *p, int flags = DEQUEUE_NOCLOCK; if (signal_pending_state(task_state, p)) { + trace_sched_set_state_tp(p, TASK_RUNNING, true); WRITE_ONCE(p->__state, TASK_RUNNING); *task_state_p = TASK_RUNNING; return false;I'm confused on the purpose of this. How does this relate to say the wakeup in signal_wake_up_state() ?quoted
@@ -6786,6 +6793,7 @@ static void __sched notrace __schedule(intsched_mode) rq = context_switch(rq, prev, next, &rf); } else { rq_unpin_lock(rq, &rf); + trace_sched_switch_vain_tp(preempt, prev, prev_state); __balance_callbacks(rq); raw_spin_rq_unlock_irq(rq); }Hurmph... don't you already have this covered by: trace_sched_exit_tp() ? Specifically, the only case where is_switch := false, is this case.
Mostly, it may work in some cases, but sched_exit happens with interrupt enabled while all types of switches (including the vain ones) must occur with interrupt disabled. Some assumptions don't stand without this tracepoint, but I guess I could adapt monitors to live without this if you believe it's not worth adding a new tracepoint there. Thanks, Gabriele