hyperlight-dev / hyperlight-dev/hyperlight

Heuristic-based scratch zeroing strategy for snapshot restore

Offen
#1,766 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
lifecycle/needs-review
Vorherrschende Sprache
Rust
Sterne
4.7k
Forks
208
Ø Merge
1 T. 7 Std.
Gemergte PRs (30 T.)
47

Beschreibung

`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

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Start with HostSharedMemory::zero_or_replace() and read the context in #1765. Benchmark zero-in-place versus delete-and-recreate across KVM, MSHV, and WHP, varying scratch-region sizes and MADV_DONTNEED availability. Done means the compile-time Windows check is replaced by a size-based heuristic that also benefits large scratch regions in MSHV Linux builds.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
infrastructure, performance
Issue-Typ
Refactoring
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Aktiv
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.