Mostrar los procesos que consumen Swap en Linux

Hace mucho tiempo que no escrbía en el blog por múltiples razones, pero siempre hay una oportunidad cuando aparece algo nuevo que no he realizado antes o que se me olvida. Este es el caso de hoy:

Resulta que me llaman porque un servidor está consumiendo memoria Swap. Cuando entré en el servidor miré que tiene 16GB de swap y está consumiendo 13GB.

Pensé que faltaba poco para que el servidor se cayera pero al mirar la RAM me di cuenta que de los 18GB que tenía, solo estaba consumiendo 8GB entonces le faltaba 10GB para consumirse toda. Al ver la swap entonces busqué liberar la memoria swap con el siguiente comando:

# swapoff -a && swapon -a

Al ejecutar el comando apareció este error:

swapoff: /dev/sda2: Cannot allocate memory

Buscando en internet encontré que eso pasa porque la cantidad de archivos de intercambio que se usa es mayor que la que puede usar la RAM. Para ello hay que ubicar los procesos que consumen mas Swap y matarlos; pero, ¿como ubico esos procesos?

1. Ejecutar el comando top:



2. Estando ahi, presionar Shift+F, mostrará la siguiente pantalla y con el cursor nos ubicamos en la línea que dice Swap:



3. Habilitamos esa opción con 'd' o con la barra espaciadora. Despúes oprimimos 'q' para salir y nos mostrará la pantalla del top con la columna de la Swap en Kb:


Como se dan cuenta, top nos muestra los procesos que están consumiendo Swap. Basado en lo anterior, ya podemos eliminarlos y liberarla. Espero les sirva de ayuda.

Saludos!!