Messages in this thread | | | Subject | Re: [PATCH] sched: balance_cpu to consider other cpus in its group as target of (pinned) task migration | From | Mike Galbraith <> | Date | Mon, 04 Jun 2012 16:30:34 +0200 |
| |
On Mon, 2012-06-04 at 18:37 +0530, Srivatsa Vaddagiri wrote: > * Mike Galbraith <efault@gmx.de> [2012-06-04 14:47:43]: > > > You need a good reason to run RT, and being able to starve others to > > death ain't it, so I don't see a good reason to care about the 95% case > > enough to fiddle with load balancing to accommodate the oddball case. > > While starvation of SCHED_OTHER task was an extreme case, the point > remains that SCHED_OTHER tasks are better served by moving them away > from cpus running rt tasks that are partially cpu intensive. While the > current code has the nuts and bolts to recognize this situation > (scale_rt_power), it fails to effect SCHED_OTHER task movement because of how > one cpu from a sched_group is designated to pull tasks on behalf of its > siblings and that chosen balance_cpu may not be in the task's cpus_allowed mask > (but the task can run on one or more of its sibling cpus).
Yeah, this is true, it is a latency source and a fairness violation. Slow path balance consideration does make some sense to me.
But, if you have an RT requirement, you can't afford to mix unknown entities, nor over-commit etc. A realtime application will assign all resources, so the load balancer becomes essentially unemployed. No? Non critical worker-bees may be allowed to bounce around in say a cpuset, but none of the CPUs which do critical work will ever be over-committed, else application just lost the war. In that regard, twiddling the load balancer to accommodate strange sounding case still seems wrong to me.
-Mike
| |