Skip to content

Experiment with Cloud Hypervisor differential snapshots - #401

Draft
sjmiller609 wants to merge 1 commit into
hypeship/ch-kernel-pagingfrom
hypeship/ch-dirty-snapshot-exp
Draft

Experiment with Cloud Hypervisor differential snapshots#401
sjmiller609 wants to merge 1 commit into
hypeship/ch-kernel-pagingfrom
hypeship/ch-dirty-snapshot-exp

Conversation

@sjmiller609

@sjmiller609 sjmiller609 commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

summary

  • add a feature-gated Cloud Hypervisor differential snapshot path
  • retain an immutable memory baseline and merge sparse deltas with range reflinks
  • detach retained memory before merging so fanout siblings and the running VM keep the prior view
  • expose the snapshot mode and restore-time dirty-tracking fields used by the corresponding Cloud Hypervisor v51.1 changes

validation

  • go test ./lib/hypervisor/cloudhypervisor
  • targeted snapshot ownership tests in ./lib/instances
  • go test ./lib/vmm on KVM-enabled Linux
  • Cloud Hypervisor: 56 VMM unit tests and cargo check -p cloud-hypervisor
  • five consecutive Chromium standby/restore cycles succeeded
  • 25-way Chromium fanout, concurrent differential standby, and 25/25 restore validation succeeded

benchmark

For 25 simultaneous 8 GiB Chromium standbys, the v51.1 fork with 64 KiB dirty-range coalescing:

  • completed 25/25 in 43.1s (42.4s p95)
  • wrote 7.34 GB of snapshot delta data; device-level writes were 8.39 GB
  • produced 34,419 extents total

A full snapshot writes 8.60 GB per VM, or about 215 GB for 25 VMs. The differential run reduced device-level writes by about 96%. Coalescing reduced the extent count by 85% and wall time by 41% versus the uncoalesced differential run, though the two fresh runs had somewhat different dirty-page totals.

status

This remains behind HYPEMAN_EXPERIMENTAL_CH_DIFF_SNAPSHOTS and requires the corresponding Cloud Hypervisor v51.1 fork. It is intended for benchmarking and design validation, not rollout. Production hardening still needs per-instance eligibility enforcement, crash-atomic baseline publication, a controlled dirty-logging overhead benchmark, and an owned build/release path for the fork.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant