NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/38169: Simplifcation for running LWP migration



The following reply was made to PR kern/38169; it has been noted by GNATS.

From: Andrew Doran <ad%NetBSD.org@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: kern/38169: Simplifcation for running LWP migration
Date: Sun, 18 May 2008 14:49:03 +0100

 I think the approach described in the PR could be even simpler:
 
 - Maintain a pointer to an LWP in schedstate_percpu that denotes an LWP that  
   the CPU is working on forcibly migrating (spc_migrating).
 
 - Add to the meaning of the LSRUN state so that it also means an LWP could
   be noted in l->l_cpu->ci_schedstate.spc_migrating, instead of residing on
   that CPU's run queue.
 
 - Adjust sched_enqueue() and sched_dequeue() to account for spc_migrating.
   The changes should be fairly minor. It may be possible to adjust dequeue()
   only, as spc_migrating would only need to be set by an ONPROC LWP when
   travelling through mi_switch().
 
 - In sched_nextlwp(), return NULL if curcpu()->ci_schedstate.spc_migrating
   is non-NULL (a forced migration is in progress). Returning NULL here would
   force a switch to the idle loop.
  
 - In the idle loop, before other processing, examine spc_migrating. If it's
   non-NULL, do a double locking dance and try to migrate the LWP onto the
   CPU pointed by l_target_cpu. Then proceed as normal, looking for more jobs   
   to run.
 
 Andrew
 


Home | Main Index | Thread Index | Old Index