La virtualización es una técnica para compartir un mismo hardware sobre varios sistemas operativos en forma simultánea. Cada sistema operativo corre en forma independiente, sin enterarse de que está compartiendo el hardware. De esta forma se pueden combinar varios servidores o máquinas en una sola, ideal para casos en donde no siempre están todas ocupadas, ya que el mismo hardware no ocupado por una máquina virtual está disponible para otra.
Aunque Linux en general reutiliza la memoria cuando dos o más aplicaciones usan la misma biblioteca, Kernel Sampage Merging (KSM) es una nueva característica de Linux que lleva la reutilización del hardware un paso más allá: en sistemas virtualizados es común que estén en ejecución varias copias de un mismo sistema operativo e incluso varias copias de una misma aplicación o servicio, con KSM todas estas copias se detectan y consolidan en una sola, reduciendo drásticamente la cantidad de memoria que se necesita. Por ejemplo RedHat indica que en sus pruebas ha tenido funcionando 600 máquinas virtuales en un solo host de 48 cores y 256GB de RAM sin ningún tipo de problemas.
Implementación de KSM es rápida, limpia y transparente
A nivel conceptual la técnica es sencilla, y se trata de lo siguiente: un sistema operativo divide la memoria en múltiples páginas de tamaño fijo, gracias a esta división se pueden guardar las páginas de memoria no ocupadas en disco y posteriormente recuperarlas llevándolas a memoria cuando se necesitan (swapping), con esto se puede usar más memoria de la disponible físicamente. KSM calcula un identificador único por cada página en base a los datos que contiene (hash) y si detecta que tiene los mismos datos que otra página (mismo hash) entonces descarta la duplicada dejando sólo una, y hace pensar al resto del sistema que se trata de páginas diferentes, pero físicamente es una sola. Si una aplicación modifica la página, entonces se crea un duplicado y se obtiene una página propia, como si siempre hubiesen estado separadas.
Esto quiere decir que si tenemos dos máquinas virtuales que ocupan 768MB pero de esa memoria 512MB son idénticos porque se trata del mismo sistema operativo + bibliotecas + aplicaciones, entonces en vez de usar 1,5GB sólo se requiere 1GB.
KSM también se ha implementado en versiones anteriores del kernel (backporting) y ya se encuentra disponible en Fedora12. Aunque es en virtualización en donde se obtienen los mayores beneficios, los usuarios de Fedora pueden ver si le están sacando provecho revisando el archivo virtual /sys/kernel/mm/KSM/pages_sharing para ver cuantas páginas físicas se están compartiendo entre una o más páginas lógicas.
Link: Using KSM (Kernel Samepage Merging) with KVM (linux-kvm.com)