Re: [patch 00/18] CFS Bandwidth Control v7.2

Paul Turner
2011-09-16T08:06:56Z

Hi Vladimir,

I had a fairly good coversation with Pavel at LPC regarding these
questions, it's probably worth syncing up with him and then following up
if you still have questions.

On 09/13/11 05:10, Vladimir Davydov wrote:
> Hello, Paul
>
> I have a question about CFS bandwidth control.
>
> Let's consider a cgroup with several (>1) tasks running on a two CPU
> host. Let the limit of the cgroup be 50% (e.g. period=1s, quota=0.5s).
> How will tasks of the cgroup be distributed between the two CPUs? Will
> they all run on one of the CPUs, or will one half of them run on one CPU
> and others run on the other?
>

Parallelism is unconstrained until the bandwidth limit is reached, at
which point we CONFIG_NR_CPUS=0

> Although in both cases the tasks will consume not more than one half of
> overall CPU time, the first case (all tasks of the cgroup run on the
> same CPU) is obviously better if the tasks are likely to communicate
> with each other (e.g. through pipe) which is often the case when cgroups
> are used for container virtualization.
>

This case is handled already by the affine wake-up path.

> In other words, I'd like to know if your code (or the scheduler code)
> tries to gather all tasks of the same cgroup on such a subset of all
> CPUs so that the tasks can't execute less CPUs without losing quota
> during each period. And if not, are you going to address the issue?
>

Parallelism != Bandwidth; no plans at this time.

Thanks!

- Paul