LWN.net Logo

KS2012: memcg/mm: Moving zcache towards the mainline

KS2012: memcg/mm: Moving zcache towards the mainline

Posted Sep 17, 2012 23:26 UTC (Mon) by Jonno (subscriber, #49613)
Parent article: KS2012: memcg/mm: Moving zcache towards the mainline

> As it stands, zcache may fill up with no-longer-used pages and then the system continues to move used pages from and to the disk.

IANAKD (I am not a kernel developer), but wouldn't the obvious solution be to not swap out application memory directly, but instead swap application memory to zcache, and once zcache fills start moving the oldest remaining zcache content to disc in order to make room for more? Thus no-longer-used pages would end up compressed on disc, and the system would only move used pages to and from zcache.


(Log in to post comments)

KS2012: memcg/mm: Moving zcache towards the mainline

Posted Sep 18, 2012 0:33 UTC (Tue) by brendan_wright (subscriber, #7376) [Link]

> wouldn't the obvious solution be to... swap application memory to zcache, and once zcache fills start moving the oldest remaining zcache content to disc...?

IANAKD either, but it sounds feasible to me :-)

KS2012: memcg/mm: Moving zcache towards the mainline

Posted Sep 19, 2012 23:03 UTC (Wed) by djm1021 (subscriber, #31130) [Link]

This is exactly the direction that zcache2 (now under the staging/ramster) is moving. The hard part is that (1) two (or more) pageframes must be available to decompress the compressed pages, at a point in time where pageframes are alerady scarce, (2) moving those decompressed pages to the swap disk must be properly synchronized with swapping non-zcache pages to disk as there are some interesting race possibilities. A preliminary patch is already working, but poorly and will need more review and input from mm experts.

KS2012: memcg/mm: Moving zcache towards the mainline

Posted Sep 20, 2012 10:35 UTC (Thu) by Jonno (subscriber, #49613) [Link]

Why are pages decompressed as part of moving the page to disk, rather than as part of swapping in it to memory again? I can see no benefit of not storing the already compressed page on disk, deferring the decompression to when the content is actually needed (if ever).

KS2012: memcg/mm: Moving zcache towards the mainline

Posted Sep 20, 2012 16:09 UTC (Thu) by djm1021 (subscriber, #31130) [Link]

What you suggest is certainly possible (but anything is possible in software :-), however it would take fairly massive changes to the swap subsystem and/or userland-visible changes. Currently, the swap cache is an in-RAM mapping of some subset of pages on the swap disk and this is important for maintaining coherency between the (one or more user or kernel) threads accessing those pages and the I/O reading/writing the swap disk. If some pageframe-size slots on the swapdisk contain one or more compressed pages, this becomes a lot more complex.

In the end, such changes might be necessary or be the best alternative, but we are trying less invasive approaches first.

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds