From d004e510966cfe1703edef70a3c60ac7c4510f11 Mon Sep 17 00:00:00 2001 From: lizzie Date: Thu, 27 Nov 2025 07:15:54 +0000 Subject: [PATCH] [host_memory] avoid doing syscall for a simple memset() op --- src/common/host_memory.cpp | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/src/common/host_memory.cpp b/src/common/host_memory.cpp index 5400b97018..8cc342c473 100644 --- a/src/common/host_memory.cpp +++ b/src/common/host_memory.cpp @@ -219,11 +219,6 @@ public: } } - bool ClearBackingRegion(size_t physical_offset, size_t length) { - // TODO: This does not seem to be possible on Windows. - return false; - } - void EnableDirectMappedAddress() { // TODO UNREACHABLE(); @@ -617,24 +612,6 @@ public: ASSERT_MSG(ret == 0, "mprotect failed: {}", strerror(errno)); } - bool ClearBackingRegion(size_t physical_offset, size_t length) { -#ifdef __linux__ - // Only incur syscall cost IF memset would be slower (theshold = 16MiB) - // TODO(lizzie): Smarter way to dynamically get this threshold (broadwell != raptor lake) for example - if (length >= 2097152UL * 8) { - // Set MADV_REMOVE on backing map to destroy it instantly. - // This also deletes the area from the backing file. - int ret = madvise(backing_base + physical_offset, length, MADV_REMOVE); - ASSERT_MSG(ret == 0, "madvise failed: {}", strerror(errno)); - return true; - } else { - return false; - } -#else - return false; -#endif - } - void EnableDirectMappedAddress() { virtual_base = nullptr; } @@ -762,7 +739,7 @@ void HostMemory::Protect(size_t virtual_offset, size_t length, MemoryPermission } void HostMemory::ClearBackingRegion(size_t physical_offset, size_t length, u32 fill_value) { - if (!impl || fill_value != 0 || !impl->ClearBackingRegion(physical_offset, length)) { + if (!impl || fill_value != 0) { std::memset(backing_base + physical_offset, fill_value, length); } }