Origen del swap: no es por llenar, sino por espacio contiguo

Fuentes: Origin of the rule that swap size should be 2x of the physical memory

El tamaño de intercambio (swap) recomendado históricamente como el doble de la memoria física (RAM) no se basó en una intención de llenarlo, sino en la necesidad de garantizar bloques de espacio contiguo en el disco para el intercambio de memoria. En los sistemas más antiguos, con discos duros (HDD) y memoria RAM limitada (por ejemplo, 8MB de RAM y 320MB de disco en 1997), la fragmentación del disco era un problema significativo debido a los tiempos de acceso lentos. Escribir datos de intercambio en bloques contiguos minimizaba estos tiempos y optimizaba el rendimiento.

Originalmente, el objetivo era asegurar que el sistema siempre pudiera encontrar un bloque de espacio libre y contiguo para escribir datos de memoria cuando fuera necesario. Aunque hoy en día, con discos de estado sólido (SSD) más rápidos y grandes, esta preocupación es menos crítica, la regla del '2x' persiste como una práctica común, aunque a menudo malinterpretada. El aumento masivo de la RAM en los sistemas modernos, especialmente en Windows, ha hecho que la proporción entre RAM y espacio de intercambio sea muy diferente a la de los sistemas más antiguos.

El doble de la RAM como espacio de intercambio también servía como una medida de seguridad. Permitía que todo el contenido de la RAM se intercambiara al disco si era necesario, aunque esto llevaría a un rendimiento significativamente más lento. La práctica de desactivar el espacio de intercambio, común entre algunos usuarios de Linux, se basaba en una comprensión incompleta de cómo funcionan la paginación y el caché de bloques. En los primeros sistemas, los procesos a menudo excedían la RAM disponible, lo que obligaba al sistema a usar el espacio de intercambio, aunque con una penalización de rendimiento. Hoy en día, los procesos tienden a acceder a más páginas de memoria, lo que hace que el uso excesivo de intercambio sea aún más perjudicial.

Es importante destacar que la regla del '2x' nunca fue una ley inquebrantable, sino más bien una heurística basada en las limitaciones tecnológicas de la época. La necesidad de bloques contiguos era primordial, especialmente en sistemas con segmentación en lugar de paginación (como FreeBSD y Windows 3.x). La elección del '2x' fue una combinación de consideraciones técnicas (asegurar bloques contiguos) y psicológicas (una estimación de la cantidad de espacio de intercambio necesaria para manejar cargas máximas sin degradación severa del rendimiento). En esencia, la regla buscaba mantener una cantidad de espacio de intercambio libre similar a la cantidad utilizada, garantizando así la disponibilidad de bloques contiguos para futuras operaciones de intercambio.