[Cbe-oss-dev] [RFC] [PATCH 0:8] SPU Gang Scheduling

Arnd Bergmann arnd at arndb.de
Tue Mar 4 15:51:02 EST 2008


On Tuesday 04 March 2008, Luke Browning wrote:
> Finally, this means that a gang is eligible to be run as long as 
> one context in the gang is runnable.  Major page faulting is the other 
> event that may cause a gang to be preempted.  It is implemented via a
> nfaulting count and a call to yield.  In this case, the gang needs to
> be put on the runqueue as the context is in kernel mode.  It is sort of 
> a step down scheduling technique to give something else a chance to run.

I think the last time we talked about this, the conclusion was that
we should always do lazy loading as well as unloading of the entire
gang, meaning that it only gets started as long as *all* threads in
the gang actually try to run on the SPU, and then run until the end
of their time slice or until the point  where all threads return to
the PPU by means of stop-and-signal or page faults.

The reason for that  is that running the gang when  only one of the
threads in it would be somewhat unfair to  the other sleeping gangs
in the system that have all contexts in a thread trying  to run SPU
code.
	Arnd <><



More information about the cbe-oss-dev mailing list