Eu tenho 16G de RAM e partição swap de 8G. Estou executando o Unity 17.04. Eu tenho um problema onde meu buff/cache
vai para 11M e swap used
vai para cerca de 3500. Anteriormente eu quase nunca usava nenhum espaço de troca e nunca monitorei o buff/cache.
Acredito que seja um aplicativo com vazamento de memória, mas posso estar errado.
Questão simples. Existe alguma maneira fácil de determinar se o aplicativo/processo está ou esteve usando swap?
Responder1
Você pode descobrir quanto o processo especial usa a partição swap com este comando:
cat /proc/"PID"/status | grep "^VmSwap"
E você pode encontrar PID
por este comando:
ps -A | grep "Application_name"
Mas se quiser descobrir quais processos estão usando a partição swap, você pode 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
Em seguida, você pode encontrar o nome do aplicativo no PID retornado pelo script.
Atualizar: Alterei este script para criar um arquivo de log a cada 10 segundos (você pode alterar o horário) e nesse arquivo você pode ver muitos processos desde o momento em que você executa este script até agora:
#!/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
E você pode configurar esse script para ser executado emcomeceentão ele cria log sempre.