KSM (inglés , combinación de la misma página del kernel , a veces interpretado como memoria compartida del kernel ) es una tecnología del kernel de Linux que permite que el kernel combine páginas de memoria idénticas entre diferentes procesos o sistemas invitados virtuales en una sola para compartir; Implementación de deduplicación de datos para RAM. La tecnología implica escanear la memoria para encontrar páginas duplicadas, cada par de duplicados se combina en una página, marcada como copia en escritura , por lo que el kernel separará automáticamente las páginas de memoria tan pronto como un proceso cambie los datos [1] .
Apareció por primera vez en la versión del kernel 2.6.32 [2] . Al comienzo de la aplicación, existía la preocupación de que la función pudiera explotarse como una vulnerabilidad , en versiones posteriores se tuvo en cuenta la preocupación. Otro problema es que la búsqueda de duplicados impone una carga adicional en los recursos del procesador [1] , por lo que la tecnología proporcionó una estimación de la frecuencia con la que cambiarán ciertas páginas de memoria, por lo que en los casos en que los costos de los recursos son relativamente altos, no se utiliza la fusión de páginas. [ 3] .
Es más ampliamente utilizado en sistemas de virtualización basados en el kernel de Linux, inicialmente en KVM , luego soportado en Xen y Virtuozzo ( los hipervisores de VMware , también construidos en el kernel de Linux, usan su propia tecnología de deduplicación de páginas RAM). Junto con las técnicas de desplazar la memoria no utilizada, la paginación en el lado del hipervisor y la compresión directa , KSM brinda a los sistemas de virtualización la capacidad de recargar los recursos de memoria ( por ejemplo , sobreasignación de memoria ); en condiciones de instancias bastante homogéneas de sistemas operativos invitados, es posible un efecto significativo, en particular, la implementación experimental de KSM de Red Hat mostró que 52 instancias virtuales de Windows XP con 1 GB de memoria asignada pueden ejecutarse en una computadora con 16 GB de RAM [4] .
También se establece la aplicabilidad y eficacia en determinados casos fuera del alcance de los problemas de virtualización [2] [3] .