Zswap: Compressed Swap Caching For Linux

These patches, while arriving unfortunately right at the start of the Linux 3.8 kernel merge window and have yet to be reviewed, provide Zswap (not to be confused by zRAM) to attempt to compress pages in the process of being swapped and compresses them into a dynamically allocated RAM-backed memory pool. Zswap attempts to avoid the writeback to the swap device where possible to reduce I/O and lead to greater performance in situations where swapping occurs.
Seth Jennings, the developer who published the set of eight patches, summarized the performance benefits as "a kernel building benchmark indicate a runtime reduction of 53% and an I/O reduction 76% with zswap vs normal swapping with a kernel build under heavy memory pressure."
The expressed rationale was said to be, "Zswap provides compressed swap caching that basically trades CPU cycles for reduced swap I/O. This trade-off can result in a significant performance improvement as reads to/writes from to the compressed cache almost always faster that reading from a swap device which incurs the latency of an asynchronous block I/O read."
Among the use-cases are desktops/laptops with limited RAM where there can be better performance when swapping, overcommitted guests that share a common I/O resource, and users of SSDs as swap devices whereby they can potentially extend the solid state drive's life by reducing the number of writes.
For more information on Zswap, see the kernel mailing list, where there are also some more extensive Zswap performance benchmark results. Based upon early feedback on the Zswap patches, it will probably still be a while before this compression feature is merged into the mainline Linux kernel.
16 Comments