From: Andi K. <ak...@su...> - 2001-07-15 20:10:43
|
On Sun, Jul 15, 2001 at 01:02:21PM -0700, Davide Libenzi wrote: > The problem of the current scheduler is that it acts like an infinite feedback > system. > When we're going to decide if we've to move a task we analyze the status at the > current time without taking in account the system status at previous time > values. > But the feedback we send ( IPI to move the task ) take a finite time to hit the > target CPU and, meanwhile, the system status changes. > So we're going to apply a feedback calculated in time T0 to a time Tn, and this > will result in system auto-oscillation that we perceive as tasks bouncing > between CPUs. > This is kind of electronic example but it applies to all feedback systems. > The solution to this problem, given that we can't have a zero feedback delivery > time, is : > > 1) lower the feedback amount, that means, try to minimize task movements > > 2) a low pass filter, that means, when we're going to decide the sort ( move ) > of a task, we've to weight the system status with the one that it had > at previous time values Nice analysis. I think Mike's proposal of the 'saved_cpus_allowed' field to temporarily bind the task to the target would just act as such an low pass filter. -Andi |