freebsd-dev/sys/conf
Colin Percival 2404380aac tslog: Optionally instrument pmap_zero_page
Booting an amd64 kernel on Firecracker with 1 CPU and 128 MB of RAM,
pmap_zero_page is responsible for 4.6 ms of the 25.0 ms of boot time.
This is not in fact time spent zeroing pages though; almost all of
that time is spent in a first-touch penalty, presumably due to the
host Linux kernel faulting in backing pages one by one.

There's probably a way to improve that by teaching Firecracker to
fault in all the VM's pages from the start rather than having them
faulted in one at a time, but that's outside of FreeBSD's control.

This commit adds a TSLOG_PAGEZERO option which enables TSLOG on the
amd64 pmap_zero_page function; it's a separate option (turned off
by default even if TSLOG is enabled) since zeroing pages happens
enough that it can easily fill the TSLOG buffer and prevent other
timing information from being recorded.

Sponsored by:	https://www.patreon.com/cperciva
Differential Revision:	https://reviews.freebsd.org/D40326
2023-06-04 10:16:31 -07:00
..
config.mk config.mk: All options in DEFAULTS are now defined in opt_global.h 2022-10-24 12:13:04 -06:00
dtb.build.mk dtb: Be much less verbose in the building of dtb 2022-10-29 10:13:54 -06:00
dtb.mk
files Add gve, the driver for Google Virtual NIC (gVNIC) 2023-06-02 14:31:54 -07:00
files.amd64 ossl: Compile newly added files into the kernel if so requested 2023-06-02 13:43:15 -04:00
files.arm zfs: merge openzfs/zfs@431083f75 2023-04-03 16:49:30 +02:00
files.arm64 Add a PCI driver that follows the Arm DEN0115 spec 2023-04-24 12:33:50 +01:00
files.i386 wdatwd: Add support for ACPI WDAT based watchdog timer. 2023-01-04 00:36:24 +09:00
files.powerpc powerpc: syscalls.c is standard 2023-04-24 09:25:42 -06:00
files.riscv riscv: Compile instr_size.c into the kernel when DTrace is configured 2023-04-21 09:26:17 -04:00
files.x86 intelspi: add PCI attachment (Lynx/Wildcat/Sunrise Point) 2023-04-24 12:41:52 +03:00
kern.mk sys: Enable -Wunused-but-set-variable for clang 15+. 2023-05-25 10:44:53 -07:00
kern.opts.mk kern.opts.mk: rationalize i386 EFI default with src.opts.mk 2023-05-12 11:04:00 -04:00
kern.post.mk kern.post.mk: fix PORTSDIR handling 2023-03-27 13:57:57 +02:00
kern.pre.mk arm64: add KASAN support 2023-03-23 16:34:33 -05:00
kmod_syms_prefix.awk
kmod_syms.awk
kmod.mk sys: Retire OPENZFS_CWARNFLAGS now that it is empty. 2023-03-22 12:35:30 -07:00
kmod.opts.mk
ldscript.amd64
ldscript.arm
ldscript.arm64
ldscript.i386
ldscript.kmod.amd64
ldscript.kmod.i386
ldscript.powerpc
ldscript.powerpc64
ldscript.powerpc64le
ldscript.powerpcspe
ldscript.riscv
Makefile.amd64 Clarify DTR_ENABLED make variable 2023-01-12 11:03:49 -04:00
Makefile.arm
Makefile.arm64 arm64: Use FULLKERNEL instead of .ALLSRC in .bin target 2023-04-18 11:41:57 -04:00
Makefile.i386
Makefile.powerpc Stop adding -Wredundant-decls to CWARNFLAGS. 2022-02-07 12:47:51 -08:00
Makefile.riscv riscv: always include frame pointer 2023-01-12 11:04:24 -04:00
newvers.sh newvers: Use correct regexp 2023-04-21 10:24:25 -06:00
NOTES tslog: Optionally instrument pmap_zero_page 2023-06-04 10:16:31 -07:00
options tslog: Optionally instrument pmap_zero_page 2023-06-04 10:16:31 -07:00
options.amd64 x86: Add MPTABLE_LINUX_BUG_COMPAT option 2022-10-17 23:02:22 -07:00
options.arm arm: Remove useless armv6/armv7 options 2022-10-20 10:48:31 -06:00
options.arm64 arm64: emulate swp/swpb instructions 2023-05-15 10:42:10 -05:00
options.i386 x86: Add MPTABLE_LINUX_BUG_COMPAT option 2022-10-17 23:02:22 -07:00
options.powerpc
options.riscv riscv: retire the FPE kernel option 2023-05-02 15:01:31 -03:00
std.nodebug
sysent.mk
systags.sh
vdso_amd64_ia32.ldscript spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD 2023-05-12 10:44:03 -06:00
vdso_amd64.ldscript spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD 2023-05-12 10:44:03 -06:00
WITHOUT_SOURCELESS
WITHOUT_SOURCELESS_HOST
WITHOUT_SOURCELESS_UCODE retire cp(4) driver 2022-12-13 15:24:52 -05:00