On Sat, 28 Jun 2003 15:16, Con Kolivas wrote: > For my sins I've included what I thought was necessary for this patch. > > The interactivity for tasks is based on the sleep avg accumulated divided > by the running time of the task. However since the accumulated time is not > linear with time it now works on the premise that running time is an > exponential function entirely. Pat Erley was the genius who implemented > this simple exponential function in surprisingly low overhead integer > maths. > > Also added was some jiffy wrap logic (as if anyone would still be running > my patch in 50 days :P). > > Long sleepers were reclassified as idle according to the new exponential > logic. > > If you test, please note this works better at 1000Hz. > > Attached also is my bastardised version of Ingo's timeslice granularity > patch. This round robins tasks on the active array every 10ms, which > _might_ be detrimental in throughput applications but has not been > benchmarked. However for desktops it does wonders to smoothing out the > jerkiness of X and I highly recommend using this in combination with the > O1int patch. > > This is very close to all the logic I wanted to implement. It might need > more tuning... Note parent penalty, child penalty and exit weight > (uppercase) no longer do anything. > > Please test and comment. > > Con > > P.S. In the words of Zwane - there is always a corner case. Corner case I > think I still need to tackle is the application that spins madly waiting > for it's child to start, and in the process it is the parent that is > starving the child by being higher priority than it. This seems to be a > coding style anomaly brought out by the scheduler. And just for good measure here is the latest with a slight addition that helps X smoothness over time. It gives the sleep_avg a little headroom so it doesn't drop from interactive as easily with bursts of cpu activity. Con