]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Add support for the new cpu topology api:
authorJeff Roberson <jeff@FreeBSD.org>
Sun, 2 Mar 2008 08:20:59 +0000 (08:20 +0000)
committerJeff Roberson <jeff@FreeBSD.org>
Sun, 2 Mar 2008 08:20:59 +0000 (08:20 +0000)
commit62fa74d95a16f87f0265550126bc3b4f5b0e4ed3
tree26a234137df28a0584568d40fefd784f5bfb906f
parent81aa71755ba60b97f977216be5f0f2c464090de2
Add support for the new cpu topology api:
 - When searching for affinity search backwards in the tree from the last
   cpu we ran on while the thread still has affinity for the group.   This
   can take advantage of knowledge of shared L2 or L3 caches among a
   group of cores.
 - When searching for the least loaded cpu find the least loaded cpu via
   the least loaded path through the tree.  This load balances system bus
   links, individual cache levels, and hyper-threaded/SMT cores.
 - Make the periodic balancer recursively balance the highest and lowest
   loaded cpu across each link.

Add support for cpusets:
 - Convert the cpuset to a simple native cpumask_t while the kernel still
   only supports cpumask.
 - Pass the derived cpumask down through the cpu_search functions to
   restrict the result cpus.
 - Make the various steal functions resilient to failure since all threads
   can not run on all cpus any longer.

General improvements:
 - Precisely track the lowest priority thread on every runq with
   tdq_setlowpri().  Before it was more advisory but this ended up having
   pathological behaviors.
 - Remove many #ifdef SMP conditions to simplify the code.
 - Get rid of the old cumbersome tdq_group.  This is more naturally
   expressed via the cpu_group tree.

Sponsored by: Nokia
Testing by: kris
sys/kern/sched_ule.c