Como encontrar quais tarefas de segundo plano ocupam a maior parte da minha memória e tempo de CPU?

0

Embora eu provavelmente precise de algum tipo de ferramenta de monitoramento como mon ou sysstat ou algo assim. Eu estou procurando uma maneira de saber quais tarefas tiram o máximo de minha memória, tempo de CPU etc.

Embora eu entenda que cada estação de trabalho / desktop é único, uma carga de trabalho típica em um dos meus desktops é algo assim:

  • Usuário único (mesmo que a escolha esteja lá para vários usuários)
  • jogos - Aisleriot, kshisen
  • cliente de torrent - qbittorrent
  • cliente de e-mail - thunderbird
  • clientes de mensagens - empatia, telegrama e quasselcore e cliente.
  • Navegador - Firefox e às vezes tor
  • área de trabalho - MATE
  • media player - mpv na maioria das vezes

normalmente é uma carga de trabalho leve na maior parte do tempo, mas ainda vejo o sensor de HDD aceso, o que significa que algumas tarefas em segundo plano estão sendo executadas, embora nenhuma tarefa em primeiro plano esteja acontecendo. Embora eu possa usar o top para descobrir quais tarefas ocupam a maior parte dos ciclos de CPU e memória, é apenas por enquanto. Percebo que preciso de algo que eu possa descobrir ao longo do tempo (digamos um dia), seja executado em segundo plano e produza gráficos bastante bons para analisar e, acima de tudo, tenha os dados brutos no local definido pelo usuário, digamos em / home / shirish / mon ou qualquer nome de diretório está lá. Tudo bem se é / var / log // logs é onde ele fica.

Eu só preciso saber algumas coisas:

  • Quais processos levam memória e CPU ao longo do tempo, primeiro plano e plano de fundo.
  • Quais processos de segundo plano ocupam a maior parte da CPU e da memória
  • O registro é sintonizável, tirando fotos a cada 2-5 minutos.

Tenho certeza de que existem ferramentas e maneiras pelas quais as pessoas fizeram isso para servidores etc. Mas alguém fez o cenário acima? Se sim, como eles foram?

    
por shirish 06.09.2016 / 21:50

2 respostas

0

//List Processes
ps -la

//Display All Network Activity
nettop

Uma tarefa cron será seu método mais direto.
Redirecione a saída para o env / path desejado com pipes

    
por 07.09.2016 / 03:58
0

Como exemplo, você pode usar o cron para executar o seguinte comando a cada X minutos:

ps --no-headers -eo "uname fname %cpu %mem" | sed -e 's/ \+/,/g' | sed "s/^/$(date --iso-8601='minutes'),/g" >> /path/to/ps.csv

Ajustando os campos ps , conforme necessário.

Em seguida, você pode usar o arquivo de saída para representar graficamente o uso usando o software de planilha, o gnuplot ou algo similar.

Como adicionar ao crontab

  1. Crie um script para colocar o comando acima em (por exemplo, $HOME/bin/pscsv.sh ).
  2. chmod + x /path/to/pscsv.sh
  3. crontab -e e adicione uma linha semelhante a */5 * * * * /path/to/pscsv.sh ajustando a periodicidade à sua preferência (este exemplo será executado a cada 5 minutos).
por 06.09.2016 / 22:56