These patches are two versions of cpuset scheduling: The first is similar to what lxd does: it just spreads containers across cores balanced by numbers. This is simple and effectice, but can lead to cases where two busy containers share the same cores while other containers are sitting around idle on underutilized cores. This takes containers with fixed cpusets into account (iow. ones where the user manually set lxc.cgroup.cpuset.cpus).
The second is a more reactive approach which tries to react to high core usage: If a core is used >90% of the time and multiple containers are assigned to it it'll try to spread them across less-utilized cores, unless most of the utilization comes from the host itself (by comparing the stats of the cpuacct cgroup's /lxc subdirectory to the stats from its root (/) directory.) If all cores are >90% utilized it'll simply do nothing. It does not take the number of threads/processes of each container into account, so this is not perfect and can cause pointless reordering when your system is "mostly under high-ish load most but not all of the time" - but we're looking at time frames of at least 10 seconds, so it should be fine most of the time. Both should cover the case where the host decides to manually change /sys/fs/cgroups/cpuset/lxc/cpuset.cpus to limit containers altogether. _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel