1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-23 16:01:42 +00:00
freebsd/sys
Alexander Motin 3d7f41175d Rework r220198 change (by fabient). I believe it solves the problem from
the wrong direction. Before it, if preemption and end of time slice happen
same time, thread was put to the head of the queue as for only preemption.
It could cause single thread to run for indefinitely long time. r220198
handles it by not clearing TDF_NEEDRESCHED in case of preemption. But that
causes delayed context switch every time preemption happens, even when not
needed.

Solve problem by introducing scheduler-specifoc thread flag TDF_SLICEEND,
set when thread's time slice is over and it should be put to the tail of
queue. Using SW_PREEMPT flag for that purpose as it was before just not
enough informative to work correctly.

On my tests this by 2-3 times reduces run time deviation (improves fairness)
in cases when several threads share one CPU.

Reviewed by:	fabient
MFC after:	2 months
Sponsored by:	iXsystems, Inc.
2012-08-09 19:26:13 +00:00
..
amd64 The assertion that I added in r238889 could legitimately fail when a 2012-08-08 05:28:30 +00:00
arm After the PHYS_TO_VM_PAGE() function was de-inlined, the main reason 2012-08-05 14:11:42 +00:00
boot As it turned out, there are some installations, where BSD label 2012-08-07 09:22:46 +00:00
bsm
cam Remove opt_enc.h from files committed with r235911. enc(4) is the 2012-07-30 03:00:58 +00:00
cddl Include <vm/vm_param.h> for PA_LOCK_COUNT in order to fix kernel build 2012-08-05 20:19:27 +00:00
compat Cosmetics: define FREEBSD32_MINUSER and AOUT32_MINUSER for struct 2012-07-22 13:41:45 +00:00
conf MFP4 change 214967: 2012-08-06 21:24:43 +00:00
contrib Update to latest git version of dtc to get new dtsv2 support, 2012-07-24 16:29:33 +00:00
crypto
ddb
dev Improve lock and unlock symmetry 2012-08-09 14:46:52 +00:00
fs After the PHYS_TO_VM_PAGE() function was de-inlined, the main reason 2012-08-05 14:11:42 +00:00
gdb
geom Clone BIO_ORDERED flag, for disk drivers (namely CAM) that try to 2012-08-07 20:16:10 +00:00
gnu/fs Just like the other file systems found in /sys/fs, g_vfs_open() 2012-08-01 23:05:57 +00:00
i386 Add lfence(). 2012-08-01 17:24:53 +00:00
ia64 After the PHYS_TO_VM_PAGE() function was de-inlined, the main reason 2012-08-05 14:11:42 +00:00
isa
kern Rework r220198 change (by fabient). I believe it solves the problem from 2012-08-09 19:26:13 +00:00
kgssapi
libkern Fix unloading of libiconv module. 2012-06-11 17:42:39 +00:00
mips Merge r132141 and r111272 from amd64/i386: 2012-08-09 16:38:17 +00:00
modules Remove opt_enc.h from files committed with r235911. enc(4) is the 2012-07-30 03:00:58 +00:00
net After the PHYS_TO_VM_PAGE() function was de-inlined, the main reason 2012-08-05 14:11:42 +00:00
net80211 Fix an incorrect comment. 2012-08-08 17:16:06 +00:00
netatalk
netgraph Remove duplicate check. 2012-08-03 12:55:31 +00:00
netinet s/lenght/length/ in comments 2012-08-07 07:52:25 +00:00
netinet6 Fix races between in_lltable_prefix_free(), lla_lookup(), 2012-08-02 13:57:49 +00:00
netipsec Fix a bug introduced in r221129 that leads to a panic wen using bundled 2012-07-22 17:46:05 +00:00
netipx
netnatm
netncp Add characters mapping for codepages used in Germany. 2012-06-01 03:59:08 +00:00
netsmb Change a duplicated check to clarify that we really want to set a 2012-07-10 21:02:59 +00:00
nfs
nfsclient After the PHYS_TO_VM_PAGE() function was de-inlined, the main reason 2012-08-05 14:11:42 +00:00
nfsserver
nlm
ofed After the PHYS_TO_VM_PAGE() function was de-inlined, the main reason 2012-08-05 14:11:42 +00:00
opencrypto
pc98 Partially revert r217515 so that the mem_range_softc variable is always 2012-07-09 20:42:08 +00:00
pci
powerpc Add backlight support for nVidia-based PowerBooks/iBooks/iMacs. 2012-08-04 03:05:01 +00:00
rpc
security
sparc64 Merge r236494 from x86: 2012-08-05 22:03:13 +00:00
sys Fix typo. 2012-08-05 06:15:12 +00:00
teken
tools
ufs After the PHYS_TO_VM_PAGE() function was de-inlined, the main reason 2012-08-05 14:11:42 +00:00
vm Never sleep on busy pages in vm_pageout_launder(), always skip them. Long 2012-08-07 04:48:14 +00:00
x86 During TSC synchronization test, use rdtsc() rather than rdtsc32(), to 2012-08-07 23:16:11 +00:00
xdr
xen
Makefile