On Tue, Apr 06, 2004 at 10:28:53AM +1000, Nick Piggin wrote:
I think my stuff is a bit orthogonal to what you're attempting.
And they should probably work well together. My "lazy migrate"
patch means the tasklist lock does not need to be held at all,
only the dying runqueue's lock.
Hi Nick,
I went thr' your patch and have some comments:
1. The benefit I see in your patch (over the solution present today)
is you migrate immediately only tasks in the runqueue and don't bother abt sleeping tasks. You catch up with them as and when they wake up.
However by doing so, are we not adding an overhead in the wake-up
path? CPU offline should be a (very) rare event and to support that we have to check a cpu's offline status _every_ wakeup call.
IMHO it is best if we migrate _all_ tasks in one shot during the
rare offline event and thus avoid the necessity of cpu_is_offline check during the (more) hotter wake_up path.
2. Also note that, migrate_all_tasks is being currently run with
rest of the machine frozen. So holding/not-holding tasklist
lock during that period does not make a difference!
My patch avoids having to migrate _immediately_ even the tasks present
in the runqueue. So the amout of time machine is frozen is greatly
reduced.