Por qué su VM no tiene swap
El swap deja que una máquina finja tener más memoria de la que tiene. En flash enterprise esa ficción cuesta desgaste del storage y un precipicio de latencia, así que en su lugar dimensionamos la RAM.
En este artículo 5 secciones
- La RAM responde en unos 100 nanosegundos. El flash rápido responde en unos 100 microsegundos. Una carga de trabajo que cae en swap corre sobre una memoria unas mil veces más lenta.
- El swapping convierte una falta de RAM en desgaste de storage y en un precipicio de latencia. La carga de trabajo falla más despacio y de forma más confusa en lugar de fallar con claridad.
- Nosotros dimensionamos la RAM en su lugar. El Sizing Desk pide la salida real de su free -m antes de proponer nada.
Las máquinas virtuales que construimos se entregan sin swap. Cuando una se queda sin memoria, el fallo es inmediato y visible, y la solución es una conversación sobre RAM. En una hoja de especificaciones eso se lee como una omisión, así que aquí va el razonamiento completo. Nada de esto depende de nuestro hardware. Puede aplicar el argumento a cualquier VM que ejecute en cualquier sitio.
El swap existe para dejar que una máquina funcione más allá de su memoria física
El swap es la válvula de alivio del kernel. Cuando la memoria física escasea, mueve a disco las páginas que juzga más frías y entrega la RAM liberada a quien la pida. La máquina puede declarar más memoria de la que contiene el silicio, cada asignación puede tener éxito, y la verdad llega más tarde, en forma de latencia, cada vez que un proceso toca una página que al final vivía en disco.
Ese intercambio tenía sentido cuando se inventó. La RAM era escasa y cara, las máquinas las compartían muchos trabajos, y un trabajo por lotes que se arrastraba toda la noche era mejor que uno que moría. Cada parte de ese contexto se ha invertido desde entonces: la RAM es la más barata que ha sido nunca por gigabyte, la máquina es suya y de nadie más, y las cargas de trabajo son servicios interactivos en los que una desviación de latencia de diez veces no se distingue de una caída. La válvula de alivio se quedó en los valores por defecto de todos modos, porque los valores por defecto sobreviven a sus razones.
Salirse de la RAM cuesta tres órdenes de magnitud
El argumento contra el swap es aritmética antes que filosofía. La memoria y el storage están en plantas distintas del edificio de la latencia, y la escalera entre ellas es larga.
- CACHÉ DE LA CPU
- alrededor de un nanosegundo
- RAM
- unos 100 nanosegundos
- FLASH RÁPIDO
- unos 100 microsegundos, mil veces más lento que la RAM
- UN PAGE FAULT HACIA SWAP
- el viaje completo de ida y vuelta al storage, más la cola, en la ruta más caliente que tiene su carga de trabajo
Las cifras exactas varían según el hardware. Los huecos entre las plantas no. Bajo presión de memoria real la máquina sube y baja esa escalera continuamente: el kernel expulsa páginas, la carga de trabajo las trae de vuelta de inmediato, y la CPU gasta sus ciclos esperando al storage. El load average sube mientras el rendimiento útil se desploma.
~0,1 a 1 ms
100 ns
~10.000×
El swap quema flash enterprise para ocultar un error de dimensionamiento
En los discos giratorios, el swap era simplemente lento. En flash es además corrosivo. El tráfico de swap es el peor patrón que puede dar al flash: un flujo continuo de pequeñas escrituras aleatorias que existen sin más razón que la de que la máquina anda corta de RAM. Cada una de esas escrituras envejece una celda para mantener una ilusión.
Y la carga de trabajo no recibe nada a cambio del desgaste. Cojea a ritmo de storage hasta que la presión termina o alguien interviene. La cabina que hay bajo su VM aquí es HPE 3PAR all-flash, y su trabajo es servir sus datos a velocidad. Gastar su resistencia a la escritura como memoria de mentira es un mal negocio a cualquier precio, por eso preferimos tener la conversación del dimensionamiento desde el principio en lugar de taparla con paginación.
Sin swap, agotar la memoria produce una línea de log en lugar de un misterio
El argumento más fuerte es el diagnóstico, y cualquiera que haya perseguido una semana lenta a través de un stack de monitorización ya lo conoce. Con swap, quedarse sin memoria se parece a todo menos a quedarse sin memoria. La latencia sube en todos los servicios a la vez, no aparece ningún error en ningún log, y los dashboards apuntan a todos los sitios donde se siente la espera, que suelen ser la base de datos y el storage. Los equipos pierden días en esa persecución, y el swap la fabrica en una sola máquina, de forma rutinaria, por diseño.
- La latencia sube en todos los servicios a la vez, sin ningún error en ningún log
- Los dashboards culpan a la base de datos, después al storage, después a la red
- La cabina absorbe un flujo de pequeñas escrituras aleatorias cuyo único trabajo es ocultar la falta
- El diagnóstico llega días después, cuando alguien correlaciona las gráficas
- El kernel mata al mayor infractor y lo nombra en el log
- El fallo tiene marca de tiempo, nombre de proceso y total de memoria
- La cabina gasta sus escrituras en datos reales
- La solución es una conversación de redimensionamiento el mismo día
Una gráfica de memoria en una máquina sin swap dice la verdad hasta el borde.
Dimensionamos la RAM con honestidad y pedimos su free -m real
La solución honesta a una falta de memoria es la misma desde que se inventó la paginación: más RAM, o un working set más pequeño. Así que ahí es donde gastamos el esfuerzo. El Sizing Desk pide la salida real de free -m de su máquina actual antes de proponer nada, porque la columna available de ese comando zanja discusiones que los adjetivos nunca zanjarán, y la misma lectura que elimina la necesidad de swap suele reducir también el presupuesto.
El método completo, con ejemplos resueltos de cada cifra que pedimos, está en cómo dimensionar un servidor. En hardware de nuestra propiedad el margen ya está dentro de la máquina que pagó, así que reservarlo no cuesta nada extra en su pico, lo que elimina la última excusa económica para tratar el storage como RAM de desborde.
Respuestas directas
¿No necesita el kernel algo de swap para funcionar bien?+
El kernel puede usar el swap para expulsar páginas realmente frías y entregar la RAM recuperada a la caché de disco, y en una máquina crónicamente justa eso ayuda en el margen. El margen es el problema. Compra unos pocos puntos porcentuales de memoria efectiva mientras oculta si la máquina es siquiera lo bastante grande, y emborrona cada gráfica de memoria de la que más tarde dependerá. En una máquina bien dimensionada la ganancia de las páginas frías se redondea a nada, y la claridad diagnóstica de un límite de memoria duro vale mucho más a las 3 de la madrugada.
¿Cómo averiguo cuánta RAM uso realmente?+
Ejecute free -m durante un pico real y lea la columna available. El método completo, con ejemplos resueltos de cada cifra, está en nuestro artículo de dimensionamiento, cómo dimensionar un servidor. Si esa columna dice que está realmente justo, la respuesta es más RAM, y así lo diremos.
«Sin swap» es una decisión pequeña aguas abajo de otras más grandes: dimensione las máquinas con cifras reales en lugar de facturas, y ponga hardware serio debajo para que las cifras aguanten en una mala noche. La conversación sobre RAM es más barata que el misterio que evita.
Dimensione la RAM con honestidad
El Sizing Desk parte de las cifras reales de su máquina y propone una configuración con nuestros bloques de construcción reales. Cuando sus cifras dicen menos, le dimensiona hacia abajo.
Abra el Sizing DeskHa llegado al final.
Ponga la lectura a trabajar
¿Qué está ejecutando?
Cuéntenos la carga de trabajo, el tráfico y los requisitos de recuperación. Empiece por el configurador de servidores o repase los detalles con un ingeniero.
Escrito por los ingenieros que construyen y operan la infraestructura que describe.Hable con un ingeniero
