public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* RT scheduling: wakeup bug?
@ 2007-10-01 22:15 Mike Kravetz
  2007-10-02  5:06 ` -rt " Ingo Molnar
  0 siblings, 1 reply; 6+ messages in thread
From: Mike Kravetz @ 2007-10-01 22:15 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Linux Kernel Mailing List

I've been trying to track down some unexpected realtime latencies and
believe one source is a bug in the wakeup code.  Specifically, this is
within the try_to_wake_up() routine.  Within this routine there is the
following code segment:

	/*
	 * If a newly woken up RT task cannot preempt the
	 * current (RT) task (on a target runqueue) then try
	 * to find another CPU it can preempt:
	 */
	if (rt_task(p) && !TASK_PREEMPTS_CURR(p, rq)) {
		struct rq *this_rq = cpu_rq(this_cpu);
		/*
		 * Special-case: the task on this CPU can be
		 * preempted. In that case there's no need to
		 * trigger reschedules on other CPUs, we can
		 * mark the current task for reschedule.
		 *
		 * (Note that it's safe to access this_rq without
		 * extra locking in this particular case, because
		 * we are on the current CPU.)
		 */
		if (TASK_PREEMPTS_CURR(p, this_rq))
			set_tsk_need_resched(this_rq->curr);
		else
			/*
			 * Neither the intended target runqueue
			 * nor the current CPU can take this task.
			 * Trigger a reschedule on all other CPUs
			 * nevertheless, maybe one of them can take
			 * this task:
			 */
			smp_send_reschedule_allbutself_cpumask(p->cpus_allowed);

		schedstat_inc(this_rq, rto_wakeup);
	}

This logic seems appropriate.  But, the task 'p' is most likely not on
the runqueue when sending the IPI.  It gets added to the runqueue a
little later in the routine.  As a result, the 'rt_overload' global may
not be set (based on the count of RT tasks on the runqueue) and other
CPUs may 'pass over' the runqueue when doing RT load balancing.

My observations/debugging/conclusions are based on an earlier version
of the code.  It appears the same code/issue still exists in the most
version.  But, I have not not done any work with the latest version.

-- 
Mike

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-10-04  8:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-01 22:15 RT scheduling: wakeup bug? Mike Kravetz
2007-10-02  5:06 ` -rt " Ingo Molnar
2007-10-02 19:30   ` Mike Kravetz
2007-10-02 19:37     ` Steven Rostedt
2007-10-03 17:37   ` Mike Kravetz
2007-10-04  8:02     ` Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox