Enable KSM Centos7/Debian

If you run a lot of Virtual Machines using qemu, you probably can save a lot of memory, at the expense of CPU cycles, by enabling Kernel Samepage Merging (KSM).
 
If you just want to test it and run only on the current boot run the following:

echo 1 > /sys/kernel/mm/ksm/run

 
After testing if you want to enable it permanently you can use systemd temporary files.

echo 'w /sys/kernel/mm/ksm/run - - - - 1' > /etc/tmpfiles.d/ksm.conf

 
To verify that it’s working run:

grep -H '' /sys/kernel/mm/ksm/*

 

The output should look something like this:


/sys/kernel/mm/ksm/full_scans:30
/sys/kernel/mm/ksm/max_page_sharing:256
/sys/kernel/mm/ksm/merge_across_nodes:1
/sys/kernel/mm/ksm/pages_shared:11322
/sys/kernel/mm/ksm/pages_sharing:423459
/sys/kernel/mm/ksm/pages_to_scan:100
/sys/kernel/mm/ksm/pages_unshared:847332
/sys/kernel/mm/ksm/pages_volatile:9139624
/sys/kernel/mm/ksm/run:1
/sys/kernel/mm/ksm/sleep_millisecs:20
/sys/kernel/mm/ksm/stable_node_chains:9
/sys/kernel/mm/ksm/stable_node_chains_prune_millisecs:2000
/sys/kernel/mm/ksm/stable_node_dups:1513
/sys/kernel/mm/ksm/use_zero_pages:0

 

Sources

https://wiki.archlinux.org/index.php/QEMU#Enabling_KSM
http://blog.siphos.be/2013/05/enabling-kernel-samepage-merging-ksm/