freebsd-skq/sys
mjg 2e8c47f811 amd64 pmap: batch chunk removal in pmap_remove_pages
pv list lock is the main bottleneck during poudriere -j 104 and
pmap_remove_pages is the most impactful consumer. It frees chunks with the lock
held even though it plays no role in correctness. Moreover chunks are often
freed in groups, sample counts during buildkernel (0-sized frees removed):

    value  ------------- Distribution ------------- count
          0 |                                         0
          1 |                                         8
          2 |@@@@@@@                                  19329
          4 |@@@@@@@@@@@@@@@@@@@@@@                   58517
          8 |                                         1085
         16 |                                         71
         32 |@@@@@@@@@@                               24919
         64 |                                         899
        128 |                                         7
        256 |                                         2
        512 |                                         0

Thus:
1. batch freeing
2. move it past unlocking pv list

Reviewed by:	alc (previous version), markj (previous version), kib
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D21832
2019-09-29 20:44:13 +00:00
..
amd64 amd64 pmap: batch chunk removal in pmap_remove_pages 2019-09-29 20:44:13 +00:00
arm arm: allwinner: Add pll_mipi to the files 2019-09-28 23:01:23 +00:00
arm64 arm64: rockchip: Add usb2phy driver 2019-09-28 22:25:21 +00:00
bsm
cam Add kern.cam.da.X.quirks tunable, similar existing for ada. 2019-09-26 14:48:39 +00:00
cddl Implement x86 dtrace_invop_(un)init() in C. 2019-09-23 15:08:17 +00:00
compat sysent: regenerate after r352747. 2019-09-26 15:41:10 +00:00
conf arm64: rockchip: Add usb2phy driver 2019-09-28 22:25:21 +00:00
contrib dpaa(4): Fix memcpy size for threshold copy in NCSW contrib 2019-09-28 02:49:46 +00:00
crypto Stop using des_cblock * for arguments to DES functions. 2019-08-26 17:25:07 +00:00
ddb ddb(4): Add some support for lexing IPv6 addresses 2019-09-09 16:32:23 +00:00
dev fdt_slicer: bump to SI_ORDER_THIRD following r347183 2019-09-29 03:12:35 +00:00
dts dtso: allwinner: Add an overlay for H3 thermal node 2019-08-24 13:26:34 +00:00
fs Replace all mtx_assert() calls for n_mtx and ncl_iod_mutex with macros. 2019-09-26 02:54:45 +00:00
gdb gdb(4): Root a sysctl tree at 'debug.gdb.' 2019-09-08 22:52:47 +00:00
geom Add a "count_until_fail" option to gnop, which says to start failing 2019-09-13 23:03:56 +00:00
gnu Import DTS files from Linux 5.3 2019-09-28 23:08:19 +00:00
i386 Improve MD page fault handlers. 2019-09-27 18:43:36 +00:00
isa
kern Fix some problems with the SPARSE_MAPPING option in the kernel linker. 2019-09-28 01:42:59 +00:00
kgssapi Stop using des_cblock * for arguments to DES functions. 2019-08-26 17:25:07 +00:00
libkern Remove zlib 1.0.4 from kernel. 2019-08-25 17:13:00 +00:00
mips Improve MD page fault handlers. 2019-09-27 18:43:36 +00:00
modules nvdimm(4): Extract ACPI root bus driver 2019-09-27 16:32:44 +00:00
net kTLS support for TLS 1.3 2019-09-27 19:17:40 +00:00
net80211 Enhance the comment ieee80211_add_channel() to avoid a 2019-06-10 14:31:18 +00:00
netgraph avoid holding PCB mutex during copyin/copyout() 2019-08-30 16:35:31 +00:00
netinet RFC 7112 requires a host to put the complete IP header chain 2019-09-29 10:45:13 +00:00
netinet6 When processing an incoming IPv6 packet over the loopback interface which 2019-09-19 10:22:29 +00:00
netipsec Fix broken window replay check that will allow old packet to be accepted. 2019-09-06 14:30:23 +00:00
netpfil Drivers may pass runt packets to filter. This is okay. 2019-09-13 22:36:04 +00:00
netsmb Stop using des_cblock * for arguments to DES functions. 2019-08-26 17:25:07 +00:00
nfs
nfsclient
nfsserver
nlm
ofed OFED: Fix accidental double-copy of rdma_sdp.h in r351176 2019-08-18 04:19:41 +00:00
opencrypto kTLS support for TLS 1.3 2019-09-27 19:17:40 +00:00
powerpc powerpc/booke64: Align initial stack setting to match that of aim64's 2019-09-28 03:33:07 +00:00
riscv Implement pmap_page_is_mapped() correctly on arm64 and riscv. 2019-09-27 23:37:01 +00:00
rpc Avoid relying on header pollution from sys/refcount.h. 2019-07-29 20:26:01 +00:00
security vm_map_simplify_entry considers merging an entry with its two 2019-08-25 07:06:51 +00:00
sparc64 Improve MD page fault handlers. 2019-09-27 18:43:36 +00:00
sys MFD_*: swap ordering 2019-09-29 03:26:29 +00:00
teken Adjust teken to allow build as part of loader 2019-09-05 18:07:40 +00:00
tests
tools fw_stub.awk: use @generated tag in generated files 2019-09-11 13:35:22 +00:00
ufs vfs: convert struct mount counters to per-cpu 2019-09-16 21:37:47 +00:00
vm Improve MD page fault handlers. 2019-09-27 18:43:36 +00:00
x86 Complete the removal of the "wire_count" field from struct vm_page. 2019-09-25 16:11:35 +00:00
xdr
xen
Makefile