From 1e0eba60af85cde427eec65be699769fb2222d55 Mon Sep 17 00:00:00 2001 From: Champ-Goblem Date: Fri, 6 Feb 2026 17:13:07 +0000 Subject: [PATCH] vmm: always try THP for VM RAM The kernel allows madvise on shared memory if /sys/kernel/mm/transparent_hugepage/shmem_enabled is set. Always try and configure THP via madvise when the user requests THP be enabled. If this fails, only a warning log is emitted and THP won't be enabled. Signed-off-by: Champ-Goblem --- vmm/src/memory_manager.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/vmm/src/memory_manager.rs b/vmm/src/memory_manager.rs index 2011e4768..03b7b8a83 100644 --- a/vmm/src/memory_manager.rs +++ b/vmm/src/memory_manager.rs @@ -25,9 +25,7 @@ use devices::ioapic; #[cfg(target_arch = "aarch64")] use hypervisor::HypervisorVmError; use libc::_SC_NPROCESSORS_ONLN; -#[cfg(all(target_arch = "x86_64", feature = "guest_debug"))] -use log::debug; -use log::{error, info, warn}; +use log::{debug, error, info, warn}; use serde::{Deserialize, Serialize}; use thiserror::Error; use tracer::trace_scoped; @@ -1490,17 +1488,20 @@ impl MemoryManager { }); } - if region.file_offset().is_none() && thp { - info!( - "Anonymous mapping at 0x{:x} (size = 0x{:x})", - region.as_ptr() as u64, - size - ); + info!( + "RAM region mapping at 0x{:x} (size = 0x{:x})", + region.as_ptr() as u64, + size + ); + + if thp && !hugepages { // SAFETY: FFI call with correct arguments let ret = unsafe { libc::madvise(region.as_ptr() as _, size, libc::MADV_HUGEPAGE) }; if ret != 0 { let e = io::Error::last_os_error(); warn!("Failed to mark pages as THP eligible: {e}"); + } else { + debug!("Successfully marked pages as THP eligible"); } }