Melhor maneira de saber qual aplicativo/processo está usando swap?

Melhor maneira de saber qual aplicativo/processo está usando swap?

Eu tenho 16G de RAM e partição swap de 8G. Estou executando o Unity 17.04. Eu tenho um problema onde meu buff/cachevai para 11M e swap usedvai 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?

insira a descrição da imagem aqui

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 PIDpor 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.

informação relacionada