Skip to content

Heuristic-based scratch zeroing strategy for snapshot restore #1766

Open

Description

@danbugs

HostSharedMemory::zero_or_replace() currently uses a compile-time #[cfg(target_os = "windows")] check to decide whether to zero scratch in-place or replace it with a fresh demand-zero allocation. This works for the immediate problem (large scratch regions on WHP), but the real decision depends on the hypervisor and the size of the region, not just the platform.

There is a break-even point between zero-in-place (via MADV_DONTNEED or fill(0)) and delete+recreate (fresh ExclusiveSharedMemory::new) that varies by:

  • Hypervisor (KVM, MSHV, WHP)
  • Scratch region size
  • Whether MADV_DONTNEED is available (KVM-only builds vs KVM+mshv3)

We should benchmark across these configurations and replace the compile-time platform check with a size-based heuristic. This would also allow MSHV builds on Linux to benefit from the fresh-allocation path for large scratch regions.

Ref: #1765

Activity

  1. added
    lifecycle/confirmedBug is verified or proposal seems reasonable
    and removed on Sep 21, 2026
  2. added this to the v0.18.0 milestone on Sep 21, 2026
  3. added
    release-blockerAdd this label to an issue that should stop a release from running whilst it is open
    and removed
    release-blockerAdd this label to an issue that should stop a release from running whilst it is open
    on Oct 5, 2026
  4. assigned and unassigned on Oct 5, 2026
  5. modified the milestones: v0.18.0, v0.19.0 on Oct 7, 2026
  6. self-assigned this
    on Oct 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

lifecycle/confirmedBug is verified or proposal seems reasonable

Type

No type

Projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions