swap

  • En la salida de atop de un servidor Linux me encontré con esta situación extraña:

    Si queda memoria principal disponible y el uso de swap es cero, ¿por qué la fila SWP figura en color rojo (uso crítico)?

  • He liberado la tercera versión estable de sere, mi herramienta para monitorear servidores Web en tiempo real desde cualquier navegador Web. Esta versión trae algunas novedades:

    • Posee gráficas mejoradas.
    • Muestra un extracto de los diez procesos que más CPU consumen.
    • Funciona correctamente en la mayoría de los navegadores, incluyendo Internet Explorer 11.
    • Muestra el uptime, fecha y usuarios cantidad de usuarios.
    • Muestra la carga promedio en los últimos 1, 5 y 15 minutos.
  • Últimamente estuve experimentando algunos problemas en mi workstation con FreeBSD 10.1. En escenarios de mucha carga ocurría que alguna aplicación se cerraba inesperadamente (notablemente máquinas virtuales de VirtualBox). Se me ocurrió que, a causa de un elevado consumo de algún recurso, el kernel de FreeBSD estuviera matando al proceso en cuestión por seguridad o porque no tuviese otra alternativa. Pero como aún no conozco bien el funcionamiento del kernel de FreeBSD, y no he tenido tiempo para debuggear errores en mi workstation, lo dejé de lado.

    Recién hoy descubrí la causa del problema. Un lector me preguntó, en los comentarios de un artículo de este blog, cómo determinar qué procesos están utilizando la swap en FreeBSD, y en ese momento descubrí que mi workstation no tiene swap. ¡Ouch! Fue entonces cuando recordé que durante la instalación de FreeBSD no definí ninguna swap. Muy desprolijo de mi parte, lo reconozco. Pero fue por "ahorrar disco".

    Lo que sucede en un sistema sin swap (memoria de intercambio) es que, cuando la memoria principal (RAM) se agota (y en mi workstation sólo tengo 4 GB), al no tener un espacio de almacenamiento secundario el kernel no tiene otra alternativa que matar procesos. Porque, lógicamente, no todos los procesos caben en memoria principal, y al momento de intentar lanzar un nuevo proceso, uno o más de los que se están ejecutando actualmente deben ser "sacrificados".

  • Hace ya un tiempo expliqué cómo utilizar un archivo como swap en FreeBSD. Esta vez me tocó implementar la misma solución sobre un servidor virtual (un Droplet, en la jerga de un conocido proveedor cloud) que vino "de fábrica" sin swap (memoria de intercambio).