O que significa exatamente quando um processo "Time" parou no topo?

11

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?

CptSupermrkt
fonte
1
Em 0,3%, isso é 1 centi-segundo a cada 3/4 segundos. Você já esperou o suficiente?
Stéphane Chazelas 26/03
1
Revelação alucinante: o aumento do tempo é calculado como uma porcentagem do uso da CPU? Uau. Então, se fosse 100% da CPU, isso seria igual em tempo real?
CptSupermrkt
5
TIME é o tempo acumulado que a CPU (qualquer CPU) passou executando qualquer thread no processo desde que foi iniciada. Portanto, pode ser mais rápido que o tempo real, se você tiver vários núcleos de CPU e o processo for multiencadeado.
Stéphane Chazelas 26/03

Respostas:

10

Se você executar um trabalho falso, como sleep 120e assisti- htoplo, notará que seu estado é Sconhecido como "SLEEP" e os processos TIMEpermanecem em 0: 00.00 durante o período.

Isso ocorre porque esse processo está consumindo 0 tempo de CPU, que é a intenção da TIMEcoluna. Ele rastreia a quantidade de tempo da CPU que um determinado processo usou.

              ss # 1

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.

slm
fonte
4

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 stracee procurar as opções que ele oferece para solucionar problemas como este.

Chux Uzoeto
fonte