From 62a7520e72c56ad4bf696c94ed648867a2ed6bb4 Mon Sep 17 00:00:00 2001 From: Manuel de Brito Fontes Date: Tue, 16 Jun 2026 23:04:03 -0300 Subject: [PATCH] perf(kernel): trim laptop/power ACPI subsystems (microVM A/B) VMINITD_READY showed guest_boot (~160ms) is overwhelmingly kernel: ~150ms kernel vs 9.5ms vminitd vs 0.3ms host handshake. The complete kmsg profile put acpi_init at 21ms and init_acpi_pm_clocksource at 4.5ms, and the config review confirmed the kernel is NOT microVM-trimmed: every laptop/power ACPI subsystem is on. Disable what a q35 container microVM never uses: - ACPI_AC / BATTERY / FAN / DOCK / THERMAL / PROCESSOR_AGGREGATOR - laptop power/thermal; there are no batteries, fans, docks or thermal zones in the VM. Each is its own small initcall probing the namespace. - ACPI_DEBUG - debug machinery that slows *every* ACPI operation; the most interesting one, since it may dent acpi_init's 21ms (table parse + namespace walk), not just remove a driver. - X86_PM_TIMER - the ACPI PM timer clocksource (init_acpi_pm_clocksource, 4.5ms); we trust the TSC (tsc=reliable) + kvm-clock, so it is redundant. Deliberately kept: ACPI_BUTTON (graceful shutdown via QMP system_powerdown), ACPI_PROCESSOR + ACPI_HOTPLUG_CPU (CPU hotplug / idle), ACPI_EC (table refs). Not acpi=off - that breaks poweroff/IRQ on q35. This is an A/B to MEASURE the achievable ACPI trim; the 21ms acpi_init core is QEMU-table-bound, so the win is the small driver initcalls + the PM timer + whatever ACPI_DEBUG removal buys. Measure with KMSG_PROFILE / VMINITD_READY. (jitterentropy is selected by CRYPTO_DRBG and is a security call - deferred.) Co-Authored-By: Claude Opus 4.8 (1M context) --- build/kernel/config-7.1-x86_64 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/build/kernel/config-7.1-x86_64 b/build/kernel/config-7.1-x86_64 index 820ce67..1693f16 100644 --- a/build/kernel/config-7.1-x86_64 +++ b/build/kernel/config-7.1-x86_64 @@ -536,22 +536,22 @@ CONFIG_ACPI_LPIT=y CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y CONFIG_ACPI_EC=y # CONFIG_ACPI_EC_DEBUGFS is not set -CONFIG_ACPI_AC=y -CONFIG_ACPI_BATTERY=y +# CONFIG_ACPI_AC is not set +# CONFIG_ACPI_BATTERY is not set CONFIG_ACPI_BUTTON=y -CONFIG_ACPI_FAN=y -CONFIG_ACPI_DOCK=y +# CONFIG_ACPI_FAN is not set +# CONFIG_ACPI_DOCK is not set CONFIG_ACPI_CPU_FREQ_PSS=y CONFIG_ACPI_PROCESSOR_CSTATE=y CONFIG_ACPI_PROCESSOR_IDLE=y CONFIG_ACPI_CPPC_LIB=y CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_HOTPLUG_CPU=y -CONFIG_ACPI_PROCESSOR_AGGREGATOR=y -CONFIG_ACPI_THERMAL=y +# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set +# CONFIG_ACPI_THERMAL is not set CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y CONFIG_ACPI_TABLE_UPGRADE=y -CONFIG_ACPI_DEBUG=y +# CONFIG_ACPI_DEBUG is not set # CONFIG_ACPI_PCI_SLOT is not set CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_HOTPLUG_IOAPIC=y @@ -570,7 +570,7 @@ CONFIG_ACPI_PCC=y CONFIG_ACPI_MRRM=y # CONFIG_PMIC_OPREGION is not set CONFIG_ACPI_VIOT=y -CONFIG_X86_PM_TIMER=y +# CONFIG_X86_PM_TIMER is not set # # CPU Frequency scaling