Si bien el comando free muestra la cantidad de SWAP utilizada, no nos dice que proceso está usándola. Si bien el manejo de Memoria de Linux es bastante inteligente como para que no nos tengamos que ocupar de estos asuntos, nunca está de más saber con certeza que ocurre en nuestro sistemas.
A partir del kernel 2.6.14 cada proceso lleva un registro del espacio de SWAP utilizado. Esta información se puede leer en el archivo /proc/$PID/smaps. Más información sobre este archivo está disponible en la página man de proc.
El siguiente script hace un barrido por el directorio /proc e imprime el uso de SWAP para cada proceso. Se recomienda ejecutarlo como usuario root.
#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0
done
echo "Overall swap used: $OVERALL"
Una vez guardado y asignado los permisos de ejecución solo queda ejecutarlo para ver que programas están consumiendo SWAP.
$ ./getswap.sh | sort -n -k 5
0 Comentarios