Re: scheduler scalability - cgroups, cpusets and load-balancing

Paul Jackson
2008-01-29T12:04:25Z

Paul, responding to Peter:
> > We now have a per-cpuset Boolean flag file called 'sched_load_balance'.
>
> SD_LOAD_BALANCE, right?

No. SD_LOAD_BALANCE is some attribute of sched domains.

The 'sched_load_balance' flag is an attribute of cpusets.

The mapping of cpusets to sched domains required several pages of 'fun
to write' code, which had to go through a couple of years of fixing and
one major rewrite before it (knock on wood) worked correctly. It's not
a one-to-one relation, in other words. See my earlier messages for
further explanation of how this works.

I'm not sure what SD_LOAD_BALANCE does ... I guess from a quick
read that it just optimizes the recognition of singleton sched
domains for which load balancing would be a wasted effort.

> > This 'sched_load_balance' flag is, thus far, "the" cpuset hook
> > supporting realtime. One can use it to configure a system so that
> > the kernel does not do normal load balancing on select CPUs, such
> > as those CPUs dedicated to realtime use.
>
> Ah, here I disagree, it is possible to do (hard) realtime scheduling
> over multiple cpus, the only draw back is that it requires a very strong
> load-balancer, making it unsuitable for large number of cpus.

I don't think we are disagreeing. I was speaking of "normal"
load balancing (what the mainline kernel/sched.c code normally
does). You're speaking of hard realtime load balancing.

I think we agree that these both exist, and require different
load balancing code, the latter 'very strong.'

--
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <pj@sgi.com> 1.940.382.4214