Tengo 16G de RAM y una partición de intercambio de 8G. Estoy ejecutando Unity 17.04. Tengo un problema donde mi buff/cache
va a 11M y mi swap used
va a alrededor de 3500. Anteriormente casi nunca usaba ningún espacio de intercambio y nunca monitoreé el beneficio/caché.
Creo que es una aplicación con pérdida de memoria, pero puedo estar equivocado.
Pregunta simple. ¿Hay alguna manera fácil de determinar si la aplicación/proceso está o ha estado usando swap?
Respuesta1
Puede encontrar cuánto utiliza el proceso especial la partición de intercambio con este comando:
cat /proc/"PID"/status | grep "^VmSwap"
Y puedes encontrarlo PID
con este comando:
ps -A | grep "Application_name"
Pero si quieres saber qué procesos están usando la partición de intercambio, puedes usar este script:
#!/bin/bash
for i in /proc/*/status ; do
vmswap=$(cat $i | grep "^VmSwap")
echo "$vmswap" | grep -qv ' 0 kB'
if [ $? == 0 ] && [ "$vmswap" != "" ] ; then
echo "$i : $vmswap"
fi
done
Luego puede encontrar el nombre de la aplicación a partir de su PID que devuelve el script.
Actualizar: Cambié este script para crear un archivo de registro cada 10 segundos (puedes cambiar el tiempo) y en ese archivo puedes ver muchos procesos desde el momento en que ejecutas este script hasta ahora:
#!/bin/bash
counter=1
touch ~/swap_process_usage.log
while true ; do
echo -e "************************************\nSwap's process in count $counter " >> ~/swap_process_usage.log
for i in /proc/*/status ; do
vmswap=$(cat $i | grep "^VmSwap")
echo "$vmswap" | grep -qv ' 0 kB'
if [ $? == 0 ] && [ "$vmswap" != "" ] ; then
pid=$(echo "$i" | tr -d /proc/ | tr -d status)
proc_name=$(ps -p $pid -o comm=)
echo "$proc_name : $pid : $vmswap" >> ~/swap_process_usage.log
fi
done
sleep 10s
counter=$((counter+1))
done
Y puede configurar este script para que se ejecute enpuesta en marchaentonces crea un registro cada vez.