freebsd-nq/sys
Alexander Motin 36acfc6507 Rework CPU load balancing in SCHED_ULE:
- In sched_pickcpu() be more careful taking previous CPU on SMT systems.
Do it only if all other logical CPUs of that physical one are idle to avoid
extra resource sharing.
 - In sched_pickcpu() change general logic of CPU selection. First
look for idle CPU, sharing last level cache with previously used one,
skipping SMT CPU groups. If none found, search all CPUs for the least loaded
one, where the thread with its priority can run now. If none found, search
just for the least loaded CPU.
 - Make cpu_search() compare lowest/highest CPU load when comparing CPU
groups with equal load. That allows to differentiate 1+1 and 2+0 loads.
 - Make cpu_search() to prefer specified (previous) CPU or group if load
is equal. This improves cache affinity for more complicated topologies.
 - Randomize CPU selection if above factors are equal. Previous code tend
to prefer CPUs with lower IDs, causing unneeded collisions.
 - Rework periodic balancer in sched_balance_group(). With cpu_search()
more intelligent now, make balansing process flat, removing recursion
over the topology tree. That fixes double swap problem and makes load
distribution more even and predictable.

All together this gives 10-15% performance improvement in many tests on
CPUs with SMT, such as Core i7, for number of threads is less then number
of logical CPUs. In some tests it also gives positive effect to systems
without SMT.

Reviewed by:	jeff
Tested by:	flo, hackers@
MFC after:	1 month
Sponsored by:	iXsystems, Inc.
2012-02-27 10:31:54 +00:00
..
amd64 Refine r231791. Install the resume event handler unconditionally. 2012-02-16 22:28:17 +00:00
arm Add C11 macros describing subnormal numbers to float.h. 2012-01-23 06:36:41 +00:00
boot Whitespace cleanup: 2012-02-25 15:21:43 +00:00
bsm
cam Use a better way to silence unneeded internal declaration warnings in 2012-02-23 21:34:14 +00:00
cddl Analogous to r232059, add a parameter for the ZFS file system: 2012-02-26 16:30:39 +00:00
compat Fix found places where uio_resid is truncated to int. 2012-02-21 01:05:12 +00:00
conf Add backlight control to ATI-graphics PowerBooks and iBooks. 2012-02-26 13:45:25 +00:00
contrib IFC @231845 2012-02-17 00:27:48 +00:00
crypto Add support for the extended FPU states on amd64, both for native 2012-01-21 17:45:27 +00:00
ddb Use strchr() and strrchr(). 2012-01-02 12:12:10 +00:00
dev Fix logic error 2012-02-27 08:57:02 +00:00
fs Remove an unused structure and unnecessary cast 2012-02-24 07:30:44 +00:00
gdb kern cons: introduce infrastructure for console grabbing by kernel 2011-12-17 15:08:43 +00:00
geom If nested scheme allows dump kernel to its partition, we may allow 2012-02-20 06:35:52 +00:00
gnu/fs Use new OSS-based BSD-licensed header for cs sound driver. 2012-02-01 21:38:01 +00:00
i386 Do not write to the user address directly, use suword(). 2012-02-25 01:33:39 +00:00
ia64 Rev. 228360 moved the call to cpu_set_upcall() to happen before 2012-02-08 04:05:38 +00:00
isa - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
kern Rework CPU load balancing in SCHED_ULE: 2012-02-27 10:31:54 +00:00
kgssapi
libkern Implement extensions on top of standards instead of the other way around. 2012-01-03 07:05:30 +00:00
mips Refctor address assignment for Octeon's ethernet ports: 2012-02-22 01:30:25 +00:00
modules Fix the scc(4) module build. Without the file it's missing a required symbol. 2012-02-26 13:27:22 +00:00
net Only look for a usable MAC address for the bridge ID from ports within our 2012-02-24 17:50:36 +00:00
net80211 Hold IF_LOCK when manipulating the interface flags. 2012-02-24 05:40:36 +00:00
netatalk Convert all users of IF_ADDR_LOCK to use new locking macros that specify 2012-01-05 19:00:36 +00:00
netgraph Revert r231829, that was my braino. 2012-02-22 09:08:51 +00:00
netinet When using flowtable llentrys can outlive the interface with which they're associated 2012-02-23 18:21:37 +00:00
netinet6 In selectroute() add a missing fibnum argument to an in6_rtalloc() 2012-02-24 20:06:04 +00:00
netipsec Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
netipx Convert all users of IF_ADDR_LOCK to use new locking macros that specify 2012-01-05 19:00:36 +00:00
netnatm
netncp Change ncp_scan_bindery_object() to pass a constant search string. 2011-10-16 08:44:03 +00:00
netsmb Add unicode support to msdosfs and smbfs; original pathes from imura, 2011-11-18 03:05:20 +00:00
nfs Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
nfsclient Adjust the nfs_skip_wcc_data_onerr setting so that it does not block 2012-02-24 17:26:06 +00:00
nfsserver Honor NFSv3 commit call (RFC 1813, Section 3.3.21) where when count is 0, 2011-12-15 02:26:53 +00:00
nlm jwd@ reported a problem via email to freebsd-fs@ on Aug 25, 2011 2012-01-31 02:11:05 +00:00
ofed Remove spurious 8bit chars, turning files into plain ASCII. 2012-01-15 13:23:54 +00:00
opencrypto
pc98 Remove full debugger options and enable KDB_TRACE option instead to decrease 2012-02-09 14:15:56 +00:00
pci Use correct Config registers for RTL8139 family. Unlike RTL8168 and 2012-02-25 04:54:51 +00:00
powerpc Add backlight control to ATI-graphics PowerBooks and iBooks. 2012-02-26 13:45:25 +00:00
rpc Both a crash reported on freebsd-current on Oct. 18 under the 2011-11-03 14:38:03 +00:00
security Remove direct access to si_name. 2012-02-10 12:35:57 +00:00
sparc64 As it turns out r227960 may still be insufficient with PREEMPTION 2012-01-28 22:42:33 +00:00
sys Analogous to r232059, add a parameter for the ZFS file system: 2012-02-26 16:30:39 +00:00
teken
tools Make vnode_if.awk parse vnode operations with underscores, like VOP_FOO_BAR. 2012-02-21 19:35:59 +00:00
ufs Properly lock DQREF() with dqhlock. Missed locking caused counter 2012-02-22 20:03:51 +00:00
vm Simplify vm_mmap()'s control flow. 2012-02-25 21:06:39 +00:00
x86 Fix apparent logic reversal in setting the 'auto_mode' flag. 2012-02-26 21:24:27 +00:00
xdr
xen Fix "_" vs. "-" typo in a comment. No functional changes. 2012-02-16 21:47:17 +00:00
Makefile Improve the cscope target's handling of MD directories. Automatically 2012-01-03 17:31:27 +00:00