On Mon, Jun 17, 2013 at 08:26:55PM +0800, Lei Wen wrote: > Hi Peter, > > > So the 'problem' is that our running avg is a 'floating' average; ie. it > > decays with time. Now we have to guess about the future of our newly > > spawned task -- something that is nigh impossible seeing these CPU > > vendors keep refusing to implement the crystal ball instruction. > > I am curious at this "crystal ball instruction" saying. :) > Could it be real? I mean what kind of hw mechanism could achieve such > magic power? What I see, for silicon vendor they could provide more > monitor unit, but to precise predict the sw's behavior, I don't think hw > also this kind of power...
There's indeed no known mechanism for this crystal ball instruction to really work with. Its just something I often wish for ;-) It would make life so much easier - although I have no experience with handling the resulting paradoxes, so who knows :-) > > So there's two asymptotic cases we want to deal well with; 1) the case > > where the newly spawned program will be 'nearly' idle for its lifetime; > > and 2) the case where its cpu-bound. > > > > Since we have to guess, we'll go for worst case and assume its > > cpu-bound; now we don't want to make the avg so heavy adjusting to the > > near-idle case takes forever. We want to be able to quickly adjust and > > lower our running avg. > > > > Now we also don't want to make our avg too light, such that it gets > > decremented just for the new task not having had a chance to run yet -- > > even if when it would run, it would be more cpu-bound than not. > > > > So what we do is we make the initial avg of the same duration as that we > > guess it takes to run each task on the system at least once -- aka > > sched_slice(). > > > > Of course we can defeat this with wakeup/fork bombs, but in the 'normal' > > case it should be good enough. > > > > > > Does that make sense? > > Thanks for your detailed explanation. Very useful indeed! :) > > BTW, I have no question for the patch itself, but just confuse at the > patch's comment > "some tasks were not launched at once after created". Right, I might edit that on applying to clarify things. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/