David Schwartz wrote:That's just it though...sched_yield() with SCHED_OTHER doesn't have well defined semantics, so we can do just about anything we want. The issue is mostly how to work around existing apps that (invalidly) expect certain behaviour from sched_yield(). CFS doesn't really do "timeslice". But in essence what you are describing is the default behaviour currently...it simply removes the task from the tree and reinserts it based on how much cpu time it used up. It gets reinserted into the tree at a position based on how much cpu time it used. This is exactly the current sched_yield() behaviour. The scheduler still doesn't know specifically what the task is waiting for. Technically, all of SCHED_OTHER has static priority level zero. Thus the "right" thing to do is to allow all SCHED_OTHER tasks to run, including the ones with the highst possible nice level. This is the alternate implementation in the current code, but it has latency implications that may be unexpected by applications written for the previous 2.6 behaviour. Chris --
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| Eric Sandeen | Re: [RFC] Heads up on sys_fallocate() |
| Rafael J. Wysocki | 2.6.27-rc4-git1: Reported regressions from 2.6.26 |
| Chuck Ebbert | Why do so many machines need "noapic"? |
git: | |
| Corey Minyard | [PATCH 3/3] Convert the UDP hash lock to RCU |
| Natalie Protasevich | [BUG] New Kernel Bugs |
| Jarek Poplawski | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Gerrit Renker | [PATCH 15/37] dccp: Set per-connection CCIDs via socket options |
