Heuristic-based scratch zeroing strategy for snapshot restore

Aperta
#1,766 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
45/100
Tipo di issue
Refactoring
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
rust

Direzione di ricerca

Inizia da HostSharedMemory::zero_or_replace() e leggi il contesto in #1765. Esegui un benchmark di zero-in-place rispetto a delete-and-recreate su KVM, MSHV e WHP, variando le dimensioni delle regioni scratch e la disponibilità di MADV_DONTNEED. Il lavoro è completato quando il controllo Windows a tempo di compilazione viene sostituito da un'euristica basata sulle dimensioni che apporti vantaggi anche alle regioni scratch di grandi dimensioni nelle build Linux di MSHV.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

lifecycle/needs-review

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

Lingua principale
Rust
Stelle
4.7k
Fork
210
Merge medio
1g 12h
PR unite (30g)
43

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di hyperlight-dev/hyperlight

Tutte le issue di hyperlight-dev/hyperlight

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.