Kernel SamePage Merging (KSM)

From Wikipedia, the free encyclopedia
Jump to: navigation, search

Kernel SamePage Merging (KSM) (also: Kernel Shared Memory, Memory Merging) lets the hypervisor system share identical memory pages amongst different processes or virtualized guests. This is done by scanning through the memory finding duplicate pages. The duplicate pair is then merged into a single page, and mapped into both original locations. The page is also marked as "copy-on-write", so the kernel will automatically separate them again should one process modify its data.[1]

KSM was originally intended to run more virtual machines on one host by sharing memory between processes as well as virtual machines. Upon implementation, it was found to be useful for non-virtualized environments as well where memory is at a premium.[2][3] An experimental implementation of KSM by Red Hat found that 52 virtual instances of Windows XP with 1GB of memory, could run on a host computer that had only 16GB of RAM.[4]

KSM first appeared in the version 2.6.32 Linux operating system kernel.[2] To be effective, the operating system kernel must find identical memory pages held by different processes. As well it needs to decide whether the pages are going to update infrequently enough that SamePage Merging would be an efficient use of processor resources.[3] When first proposed, there were concerns that this feature could be exploited as a security vulnerability (this concern has since been addressed). Another concern is that although memory usage is reduced, CPU usage is increased, thus negating potential increases in performance.[1]


  1. ^ a b "KSM tries again". Retrieved 2010-08-21.
  2. ^ a b "Anatomy of Linux Kernel Shared Memory". IBM DeveloperWorks. IBM. Retrieved 2010-08-21.
  3. ^ a b "Increasing memory density by using KSM". Retrieved 2010-08-21.
  4. ^ "Kernel Samepage Merging (memory deduplication)". kernelnewbies. kernelnewbies. Retrieved 2010-08-21.

External links