Tuesday, February 23, 2010

Memory Compression support for various Linux distributions

I recently installed the latest release of Ubuntu (9.10 aka Karmic Koala) and was disappointed to find an ancient version of compcache/ramzswap installed by default. My favourite distro (Fedora) does not even ship compcache. Currently, major part of compcache/ramzswap code is included in mainline (2.6.33) however full support is expected no sooner than kernel 2.6.34. I think it will take quite a long time before 2.6.34 kernel is adopted by various distros. Also, it takes considerable amount of time before additions/fixes to compcache are synced with mainline kernel. I think Ubuntu, Fedora and their various 'spins' can benfit from memory compression and there is no need to wait for these future kernel releases. Providing support for uptodate compcache version is also very easy and non-intrusive. Here what any distro needs to do:

  • Apply (small) "swap notify" patch to kernel. This patch is included in '-mm' tree since a long time and is well tested.
  • Ship ramzswap kernel module and rzscontrol utility as a spearate package. This package can be updated as soon as new compcache version is available for download. This package can be provided through rpmfusion repository for Fedora and something similar for Ubuntu.
All of above (notify patch, ramzswap module, rzscontrol utility) are available at project's download area. I hope it will be adopted by more distros in future giving me motivation to keep the development alive :)

2 comments:

  1. OTOH, custom Android ROMs have so far been the forefront of adopting CompCache.

    BTW, how's the memory defrag feature going?

    THX!

    ReplyDelete
  2. > OTOH, custom Android ROMs have so far been the forefront of adopting CompCache.

    I thank Android community for this! Active support from Android guys has been instrumental in stable support on ARM platform.

    > BTW, how's the memory defrag feature going?

    I hope I will soon get some time to start work on this :)

    ReplyDelete