Re: [PATCH 3/3] sched: Implement interface for cgroup unified hierarchy
From: Paul Turner
Date: Mon Aug 24 2015 - 17:10:53 EST
On Mon, Aug 24, 2015 at 2:02 PM, Tejun Heo <tj@xxxxxxxxxx> wrote:
> On Mon, Aug 24, 2015 at 01:54:08PM -0700, Paul Turner wrote:
>> > That alone doesn't require hierarchical resource distribution tho.
>> > Setting nice levels reasonably is likely to alleviate most of the
>> > problem.
>> Nice is not sufficient here. There could be arbitrarily many threads
>> within the hypervisor that are not actually hosting guest CPU threads.
>> The only way to have this competition occur at a reasonably fixed
>> ratio is a sub-hierarchy.
> I get that having hierarchy of threads would be nicer but am having a
> bit of difficulty seeing why adjusting priorities of threads wouldn't
> be sufficient. It's not like threads of the same process competing
> with each other is a new problem. People have been dealing with it
> for ages. Hierarchical management can be a nice plus but we want the
> problem and proposed solution to be justifiable.
Consider what happens with load asymmetry:
Suppose that we have 10 vcpu threads and 100 support threads.
Suppose that we want the support threads to receive up to 10% of the
time available to the VM as a whole on that machine.
If I have one particular support thread that is busy, I want it to
receive that entire 10% (maybe a guest is pounding on scsi for
example, or in the thread-pool case, I've passed a single expensive
computation). Conversely, suppose the guest is doing lots of
different things and several support threads are active, I want the
time to be shared between them.
There is no way to implement this with nice. Either a single thread
can consume 10%, and the group can dominate, or the group cannot
dominate and the single thread can be starved.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/