Brussels / 3 & 4 February 2024


Zeroing and the semantic gap between host and guest

Checkpointing and snapshotting solutions like CRaC or Snapstart become increasingly popular for reducing startup/warmup times. They serialize a warmed-up Java application to disk and allow users to quickly resume their application from that specific state at a later point in time. The smaller the serialized JVM/application image is, the faster it can be restored or transferred to a remote location.

This talk is about minimizing the memory footprint of the JVM before a snapshot/checkpoint. Uncommitting unused parts of the address space works well for CRIU but imposes challenges for full KVM snapshots because of the "semantic gap" between the guest and host operating system. We will demonstrate how zeroing and kernel features like init_on_free, Kernel Samepage Merging (KSM) and ballooning can improve the snapshot/restore process and will compare CRIU and Firecracker snapshot sizes.


Photo of Volker Simonis Volker Simonis