
Me parece bastante contraproducente almacenar en caché las páginas que se intercambian. Si intercambia páginas, ¿cuál es la ventaja de almacenarlas primero en caché en la memoria y luego tener que moverlas al lugar correcto? Incluso si las páginas se intercambian de forma proactiva, ¿no tiene más sentido "simplemente" intercambiarlas? De hecho, ¿el intercambio de caché no es solo un desperdicio de recursos?
Respuesta1
Después de investigar un poco más, descubrí que el término SwapCached in /proc/meminfo
es engañoso. De hecho, se relaciona con la cantidad de bytes que son simultáneos en la memoria y el intercambio, de modo que si estas páginas no están sucias, no es necesario intercambiarlas.
Respuesta2
Ni siquiera había oído hablar de este y tampoco tiene mucho sentido para mí. Sigo pensando que la vieja regla de asegurarse de que no se cambie en absoluto (excepto, por supuesto, las reservas) es la mejor. Ahora bien, en teoría, el almacenamiento en caché de cosas en la memoria directa disponible, que tarda un poco en cargarse desde algo tan lento como un disco, tiene una ventaja aparente. Pero si puede almacenar en caché las páginas que se van a intercambiar, ¿por qué volver a intercambiarlas en primer lugar?
Respuesta3
El objetivo de tener páginas duplicadas entre swap y RAM es evitar esperar por el disco si:
Algo necesita leer de ellos
Hay que desalojarlos para dejar espacio a otra cosa.
Si solo estuvieran en intercambio, el caso 1. significaría esperar a que ingresen desde el disco; si estuvieran solo en la RAM, el caso 2. significaría esperar a que salgan al disco.
(Por supuesto, el caso 2 es en realidad un poco más complicado, ya que obviamente es más barato desalojar dichas páginas, por lo que el núcleo probablemente las desaloja preferentemente, pero el punto debe quedar claro).