¿Por qué tiene sentido realizar un intercambio de caché?

¿Por qué tiene sentido realizar un intercambio de caché?

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/meminfoes 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:

  1. Algo necesita leer de ellos

  2. 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).

información relacionada