QEMU is an open source emulator and virtualizer that allows an entire operating system to be run as a normal process on a host operating system. One of the features supported by QEMU is to save the current guest machine state and restart from that state anytime in the future. Such a state includes the following:

i) The emulated physical memory (guest RAM)

ii) The emulated devices.

iii) Disk contents

The Qemu monitor command savevm can be used to take such a snapshot while the complementary command loadvm loads any of the snapshots taken. However, in the original qemu version, savevm is too slow for it to be practically usable on guest machines with lot of emulated memory. Especially,   the time taken to take a snapshot increases considerably with an increase in the guest RAM size. Also incremental snapshots (snapshots taken one after the other) take the same amount of time even if the pages in RAM while taking the latest snapshot are identical to when the last snapshot was taken

This project page therefore contains patches to qemu which lets you take faster snapshots.

Link to Downloads

Unmodified QEMU 

Modified qemu 

fast_snapshot_patch

linux-0.2.img

Installation Instructions:

InstallationInstructions.pdf

Technical Documentation:

Design.pdf