Analisarei por que estamos recebendo alertas críticos de troca e vou encontrar algo como:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND
14683 user1 30 10 16.0g 772m 744 S 0.3 0.3 277:24.87 6.5g MATLAB
14576 user1 30 10 8125m 1.1g 736 S 0.3 0.4 261:16.73 4.1g MATLAB
onde a coluna TIME + é congelada para esses processos.
Minha pergunta é, acima, o que isso implica?
Pelo que entendi, o tempo parado significa que é um processo inativo / não sendo processado pela CPU. No entanto, o exemplo acima mostra 0,3% de uso da CPU. Portanto, apesar de ser muito pequena, a coluna de tempo não deve continuar aumentando?
Esses processos estão "concluídos"? Nesse caso, como eles são limpos? O usuário que os iniciou precisa reconhecê-los ou algo para que esses recursos sejam liberados?
Respostas:
Se você executar um trabalho falso, como
sleep 120
e assisti-htop
lo, notará que seu estado éS
conhecido como "SLEEP" e os processosTIME
permanecem em 0: 00.00 durante o período.Isso ocorre porque esse processo está consumindo 0 tempo de CPU, que é a intenção da
TIME
coluna. Ele rastreia a quantidade de tempo da CPU que um determinado processo usou.Essa contagem pode ser confusa às vezes, se um processo puder ser executado em vários núcleos da CPU, pois aparentemente pode consumir mais tempo do que o disponível. Tudo o que está acontecendo é que, se você tiver um número X de núcleos, seu tempo poderá aparecer como X * TIME.
fonte
A razão pela qual você pode ter uma disparidade assim é porque a coluna TIME + não leva em consideração o tempo de CPU usado por filhos mortos gerados pelo processo listado. Então, eu imagino que as linhas exibidas indicam um aplicativo que é (possivelmente rápido) gerando crianças que estão morrendo quase imediatamente ..
So, the CPU usage is due to spawned children which do not count in the TIME+ column.
Você pode alterar o topo para fazer o tempo acumulado através do interruptor 'S'.Mas acho que você está analisando os indicadores errados para o que está procurando investigar.
strace -p <pid>
é seu amigo aqui e permitirá que você espreite o processo de execução e o que exatamente ele está fazendo.Strace tem uma infinidade de opções. algumas opções notáveis incluem -f, -ff, -i, v, etc. O Strace é a ferramenta mais útil; portanto, é melhor fazer um
man strace
e procurar as opções que ele oferece para solucionar problemas como este.fonte