linux/include
Manfred Spraul 9de5ab8a2e ipc/sem: add hysteresis
sysv sem has two lock modes: One with per-semaphore locks, one lock mode
with a single global lock for the whole array.  When switching from the
per-semaphore locks to the global lock, all per-semaphore locks must be
scanned for ongoing operations.

The patch adds a hysteresis for switching from the global lock to the
per semaphore locks.  This reduces how often the per-semaphore locks
must be scanned.

Compared to the initial patch, this is a simplified solution: Setting
USE_GLOBAL_LOCK_HYSTERESIS to 1 restores the current behavior.

In theory, a workload with exactly 10 simple sops and then one complex
op now scales a bit worse, but this is pure theory: If there is
concurrency, the it won't be exactly 10:1:10:1:10:1:...  If there is no
concurrency, then there is no need for scalability.

Link: http://lkml.kernel.org/r/1476851896-3590-3-git-send-email-manfred@colorfullife.com
Signed-off-by: Manfred Spraul <manfred@colorfullife.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Davidlohr Bueso <dave@stgolabs.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: <1vier1@web.de>
Cc: kernel test robot <xiaolong.ye@intel.com>
Cc: <felixh@informatik.uni-bremen.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2017-02-27 18:43:46 -08:00
..
acpi Merge branches 'acpi-bus', 'acpi-sleep' and 'acpi-processor' 2017-02-20 14:28:03 +01:00
asm-generic kprobes: move kprobe declarations to asm-generic/kprobes.h 2017-02-27 18:43:45 -08:00
clocksource
crypto crypto: algapi - make crypto_xor() and crypto_inc() alignment agnostic 2017-02-11 17:52:28 +08:00
drm Less anger inducing pull request for 4.11 2017-02-23 18:58:18 -08:00
dt-bindings The usual collection of new drivers, non-critical fixes, and updates 2017-02-25 14:28:06 -08:00
keys
kvm KVM: arm/arm64: Emulate the EL1 phys timer registers 2017-02-08 15:13:37 +00:00
linux ipc/sem: add hysteresis 2017-02-27 18:43:46 -08:00
math-emu
media [media] v4l2-subdev.h: fix v4l2_subdev_pad_config documentation 2017-02-03 12:00:37 -02:00
memory
misc
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-02-22 10:15:09 -08:00
pcmcia
ras
rdma This is a tree wide change and has been kept separate for that reason. 2017-02-25 13:45:43 -08:00
rxrpc
scsi SCSI misc on 20170220 2017-02-21 11:51:42 -08:00
soc ARC updates for 4.11 rc1 2017-02-22 10:33:53 -08:00
sound treewide: Remove remaining executable attributes from source files 2017-02-25 12:12:50 -08:00
target First set of updates for 4.11 kernel merge window 2017-02-23 08:27:57 -08:00
trace Merge branch 'for-linus-4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs 2017-02-25 14:53:58 -08:00
uapi autofs: remove duplicated AUTOFS_DEV_IOCTL_SIZE definition 2017-02-27 18:43:45 -08:00
video drm/exynos/decon5433: signal vblank only on odd fields 2017-02-07 13:52:52 +09:00
xen This is a tree wide change and has been kept separate for that reason. 2017-02-25 13:45:43 -08:00
Kbuild