Desde el kernel 2.6.28, Linux utiliza una estrategia de reemplazo de página Split Least Latest Used (LRU). Las páginas con una fuente de sistema de archivos, como el texto del programa o las bibliotecas compartidas pertenecen al caché de archivos. Las páginas sin respaldo del sistema de archivos se denominan páginas anónimas y consisten en datos de tiempo de ejecución, como el espacio de pila reservado para aplicaciones, etc. Por lo general, las páginas que pertenecen al caché de archivos son más baratas de desalojar de la memoria (ya que estas pueden leerse desde el disco cuando sea necesario) . Dado que las páginas anónimas no tienen respaldo del sistema de archivos, deben permanecer en la memoria siempre que un programa las necesite a menos que haya espacio de intercambio para almacenarlas.
Es un error común pensar que una partición de intercambio de alguna manera ralentizaría su sistema. No tener una partición de intercambio no significa que el núcleo no expulse las páginas de la memoria, solo significa que el núcleo tiene menos opciones con respecto a qué páginas expulsar. La cantidad de intercambio disponible no afectará la cantidad que se usa.
Linux puede hacer frente a la ausencia de un espacio de intercambio porque, de forma predeterminada, la política de contabilidad de la memoria del núcleo puede comprometer en exceso la memoria . La desventaja es que cuando la memoria física se agota, y el núcleo no puede intercambiar páginas anónimas al disco, el mecanismo de eliminación de memoria ( asesino OOM) comenzará a eliminar los procesos "deshonestos" que acaparan la memoria para liberar memoria para otros procesos
La vm.swappiness
opción es un modificador que cambia el equilibrio entre el intercambio de páginas de caché de archivos a favor de páginas anónimas. El caché del archivo tiene un valor de prioridad arbitrario de 200 del cual vm.swappiness
se deduce el modificador ( file_prio=200-vm.swappiness
). Las páginas anónimas, por defecto, comienzan con 60 ( anon_prio=vm.swappiness
). Esto significa que, por defecto, los pesos de prioridad son moderadamente favorables a las páginas anónimas ( anon_prio=60
, file_prio=200-60=140
). El comportamiento se define mm/vmscan.c
en el árbol fuente del núcleo.
Dado un vm.swappiness
de 100
, las prioridades serían iguales ( file_prio=200-100=100
, anon_prio=100
). Esto tendría sentido para un sistema pesado de E / S si no se desea que las páginas del caché de archivos se desalojen en favor de páginas anónimas.
Por el contrario, configurar vm.swappiness
to 0
evitará que el kernel expulse páginas anónimas a favor de páginas del caché de archivos. Esto podría ser útil si los programas hacen la mayor parte de su almacenamiento en caché, lo que podría ser el caso con algunas bases de datos. En los sistemas de escritorio, esto podría mejorar la interactividad, pero la desventaja es que el rendimiento de E / S probablemente se verá afectado.
El valor predeterminado probablemente se haya elegido como un punto medio aproximado entre estos dos extremos. Al igual que con cualquier parámetro de rendimiento, el ajuste vm.swappiness
debe basarse en datos de referencia comparables a las cargas de trabajo reales, no solo en una intuición.