freebsd-nq/sys
Mateusz Guzik 9afff6b1c0 Eliminate false sharing in malloc due to statistic collection
Currently stats are collected in a MAXCPU-sized array which is not
aligned and suffers enormous false-sharing. Fix the problem by
utilizing per-cpu allocation.

The counter(9) API is not used here as it is too incomplete and does
not provide a win over per-cpu zone sized for malloc stats struct. In
particular stats are being reported for each cpu separately by just
copying what is supposed to be an array element for given cpu.

This eliminates significant false-sharing during malloc-heavy tests
e.g. on Skylake. See the review for details.

Reviewed by:	markj
Approved by:	re (kib)
Differential Revision:	https://reviews.freebsd.org/D17289
2018-09-23 19:00:06 +00:00
..
amd64 Further reorganize pmap_invalidate TLB code. 2018-09-22 17:04:39 +00:00
arm Enable Capsicum on armv6/armv7 2018-09-13 21:00:17 +00:00
arm64 Clear all of the VFP state in fill_fpregs(). 2018-09-19 22:53:52 +00:00
bsm
cam Make the wait in cfiscsi_offline() interruptible. This is the second half 2018-09-11 11:39:59 +00:00
cddl MFV r338866: 9700 ZFS resilvered mirror does not balance reads 2018-09-21 21:56:00 +00:00
compat x86bios: use M_NOWAIT with mallocs 2018-09-13 07:04:00 +00:00
conf Include kernel ident in uname 2018-09-21 13:43:06 +00:00
contrib Add proper support for VIMAGE to krping. 2018-09-06 14:03:11 +00:00
crypto Don't load ccp automatically with devmatch 2018-08-31 01:01:16 +00:00
ddb add an option for ddb ps command to print process arguments 2018-08-09 11:21:31 +00:00
dev cxgbe(4): Reuse existing "switching" L2T entries when possible. 2018-09-22 01:24:30 +00:00
dts arm64: Add DTS overlays for A64 2018-08-24 15:00:36 +00:00
fs Remove the Yarrow PRNG algorithm option in accordance with due notice 2018-08-26 12:51:46 +00:00
gdb
geom OpenCrypto: Convert sessions to opaque handles instead of integers 2018-07-18 00:56:25 +00:00
gnu dts: Import DTS for arm64 2018-08-23 13:21:01 +00:00
i386 Convert x86 cache invalidation functions to ifuncs. 2018-09-19 19:35:02 +00:00
isa Back out r338035 until Warner is finished churning GSoC PNP patches 2018-08-19 00:46:22 +00:00
kern Eliminate false sharing in malloc due to statistic collection 2018-09-23 19:00:06 +00:00
kgssapi OpenCrypto: Convert sessions to opaque handles instead of integers 2018-07-18 00:56:25 +00:00
libkern Sync strlcpy with userland version, again 2018-06-21 17:35:13 +00:00
mips Re-enable kernel modules for the MALTA64EL kernel configuration. 2018-09-06 19:21:31 +00:00
modules Catch exceptions during EFI RT calls on amd64. 2018-09-02 21:37:05 +00:00
net fix vlan locking to permit sx acquisition in ioctl calls 2018-09-21 01:37:08 +00:00
net80211 Fix misspellings of transmitter/transmitted 2018-08-10 20:37:32 +00:00
netgraph Remove the Yarrow PRNG algorithm option in accordance with due notice 2018-08-26 12:51:46 +00:00
netinet Remove the unused parameter 'locked' from the function 2018-09-23 16:37:32 +00:00
netinet6 In icmp6_rip6_input(), once we have a lock, make sure the inp is 2018-09-20 15:45:53 +00:00
netipsec Use the new VNET_DEFINE_STATIC macro when we are defining static VNET 2018-07-24 16:35:52 +00:00
netpfil Significantly improve pf purge cpu usage by only taking locks 2018-09-16 00:44:23 +00:00
netsmb Make timespecadd(3) and friends public 2018-07-30 15:46:40 +00:00
nfs Switch RIB and RADIX_NODE_HEAD lock from rwlock(9) to rmlock(9). 2018-06-16 08:26:23 +00:00
nfsclient
nfsserver
nlm
ofed Introduce and use sgid_index in CM requests in ibcore. 2018-09-09 07:20:15 +00:00
opencrypto cryptosoft: Reduce generality of supported algorithm composition 2018-08-17 04:40:01 +00:00
powerpc powerpc64: Add initial support for HTM (kABI) 2018-09-06 17:07:21 +00:00
riscv Various fixes for floating point on RISC-V. 2018-09-19 23:45:18 +00:00
rpc Set SO_SNDTIMEO in the client side krpc when CLSET_TIMEOUT is done. 2018-07-20 12:03:16 +00:00
security The kernel DTrace audit provider (dtaudit) relies on auditd(8) to load 2018-09-03 14:26:43 +00:00
sparc64 Prepare the kernel linker to handle PC-relative ifunc relocations. 2018-08-22 20:44:30 +00:00
sys Eliminate false sharing in malloc due to statistic collection 2018-09-23 19:00:06 +00:00
teken teken: Fix sequences header which was crossing the 80-col boundary 2018-05-29 08:41:44 +00:00
tests epoch_test: fix compile 2018-07-15 00:31:17 +00:00
tools make_dtb: Always add root directory in the include path 2018-08-23 13:23:21 +00:00
ufs Correct panic messages. 2018-09-22 17:05:49 +00:00
vm Ensure that imports into per-domain kmem arenas are KVA_QUANTUM-aligned. 2018-09-20 18:29:55 +00:00
x86 Convert x86 cache invalidation functions to ifuncs. 2018-09-19 19:35:02 +00:00
xdr
xen xen: legacy PVH fixes for the new interrupt count 2018-09-13 07:14:11 +00:00
Makefile