Como encontro o processo com a carga mais alta?

10

Eu tenho um VPS de núcleo único com uma média de carga que ultrapassa 25 às vezes. Quando chega a isso, torna-se insuportavelmente lento, e até os comandos são executados dash, o que é mais rápido e usa menos RAM do que bashleva um tempo para ser executado. Como posso rastrear qual processo está causando a alta carga?

NerdOfLinux
fonte
2
sudo apt install htopfornece uma ferramenta útil em modo de texto para esse fim (mais amigável que o padrão top). Mas topé bom se você quer uma pegada pequena.
Sudodus 5/11
2
O comprimento da fila de carregamento indica quantos processos estão prontos para usar a CPU. Isso pode não ser necessariamente um único processo que está causando o problema.
Thorbjørn Ravn Andersen

Respostas:

16

Você pode instalar htop. O bom htopé que ele mostrará seu uso por CPU, bem como um gráfico de texto significativo da sua memória e troque o uso diretamente na parte superior.

Para instalar htop:

sudo apt-get install htop

Inicie:

htop

insira a descrição da imagem aqui

Pressione F6para classificar os processos e, usando a tecla de navegação, você pode escolher PERCENT_CPUe pressionar enter.

insira a descrição da imagem aqui

Ou você pode usar topdesta maneira ( fonte ):

top -b -n 1 | head -n 12
neferpitou
fonte
2
Como atalho, você pode usar Ppara classificar por uso do processador, Mpor memória ou Tpor tempo e tretornar ao layout da árvore.
Deltab #
Curiosamente, htoptem algum suporte básico para mouse. Se você clicar nas colunas, também será possível ordená-las (se não me engano). Existem outras operações que funcionam com o mouse.
Ismael Miguel
11

O abaixo é apenas roubado do Unix.SE: Encontre o processo que está levando o uso máximo da CPU se o uso da CPU for superior a 60%? , embora obviamente adaptado a esta pergunta.

listar processos por uso específico da CPU

ps ahux --sort=-c | awk '{if($3>0.0)printf"%s %6d %s\n",$3,$2,$11}'

Isso fornece uma lista dos processos que possuem >0.0% de uso da CPU . Você pode alterar esse valor de acordo com suas necessidades, por exemplo >50.0. Cada linha contém o uso da CPU em porcentagem, o PID e o arquivo do processo.

listar processos com mais uso de CPU

ps ahux --sort=-c | awk 'NR<=5{printf"%s %6d %s\n",$3,$2,$11}'

Isso mostra os 5 principais NR<=5processos ( ) atualmente causando a maior carga de CPU.

sobremesa
fonte
1

Ontem eu estava estudando awke brinquei com as outras duas respostas. Aqui está o resultado:

  • Obtenha apenas o processo com o maior uso de CPU, usando ps aux:

    ps auxh | awk -v max=0 '{if($3>max){CPU=$3; PID=$2; NAME=$11; max=$3}} END{printf "%5s %6d %s\n",CPU,PID,NAME}'
    
  • Obtenha os três processos com o uso mais alto da CPU, usando top:

    top -b -n 1 | awk 'NR>7 && NR<11 {printf "top: %5s %6d %s %s\n",$9,$1,$12,$13}'
    
  • Obtenha os três processos com o uso mais alto da CPU, usando ps aux:

    ps auxh --sort=-c | awk 'NR<=3 {printf "ps:  %5s %6d %s\n",$3,$2,$11}'
    

Eu tentei executar os dois últimos comandos simultaneamente (com <command>; wait; <command>e <command> & <command> &), mas depois percebi que não é possível :)


Referências:

pa4080
fonte
O último não mostra o processo com o maior uso da CPU, mas começa com o segundo, você provavelmente quis dizer NR>=2lá - psao hque parece, fornece a opção que omite a linha do cabeçalho, veja minha resposta atualizada.
sobremesa
@dessert, você está certo, anteriormente era NR>=2, mas NR>1é curto :) Eu atualizei a resposta.
pa4080
1

topComando de uso

top- exibir processos Linux

O programa superior fornece uma visualização dinâmica em tempo real de um sistema em execução. Ele pode exibir informações de resumo do sistema, bem como uma lista de processos ou threads atualmente sendo gerenciados pelo kernel do Linux. Os tipos de informações de resumo do sistema mostrados e os tipos, ordem e tamanho das informações exibidas para processos são todos configuráveis ​​pelo usuário e essa configuração pode ser feita persistente entre as reinicializações.

fonte

bom tutorial do youtube

Eric Korolev
fonte