Como obter estatísticas sobre o tempo de execução de comandos no Linux

Entre os comandos que todo administrador deveria dominar, o time é, com certeza, um deles.
Útil para obter valores sobre a performance do sistema e para monitorar alguns aspectos da execução de tarefas, o comando time retorna o tempo decorrido desde o início de uma atividade.
Veja como é fácil usá-lo.
tag heuer semi cronograph time cronômetro
Desenvolvedores também podem se beneficiar deste comando, para testar a performance de aplicativos ou scripts.

Como usar o comando time

A sintaxe do comando time é a seguinte:

time <comando> <parâmetros do comando>

É mais fácil entender com um exemplo prático.
Veja como determinar o tempo que o comando ‘ls -l’ leva para retornar a lista de arquivos dentro do seu diretório atual:

time ls -l

Depois de exibir a lista de arquivos, o time mostra a tempo de execução, conforme o exemplo abaixo (2 centésimos de segundo):

real   0m0.002s
user   0m0.000s
sys    0m0.000s

As três linhas se referem aos números referentes ao tempo total (em>real) gasto para rodar o comando ls, o tempo gasto dentro do user mode e o tempo dispendido dentro do kernel mode (sys).
Saiba mais sobre o que são kernel mode e user mode.

Um desenvolvedor preocupado com a performance, pode rodar diversas seu programa ou script, à medida em que faz modificações no código para torná-lo mais eficiente.

time vs /usr/bin/time

Você tem 2 comandos para usar:
time e
/usr/bin/time.
O primeiro, é um comando built-in, ou embutido, no Bash. O segundo, é um aplicativo GNU.
A versão embutida pode fornecer uma precisão de milisegundos, enquanto o programa externo oferece precisão de centésimos de segundos.
A versão Bash tem precisão maior por que usa a função getrusage(), enquanto a versão externa usa a função times().
Por outro lado a versão GNU, oferece mais opções de formatação da saída.

Diferentes shells têm diferentes implementações de comandos internos ou built in commands. Assim, você pode esperar diferentes comportamentos do time executado no zsh, no ksh etc.

Nossos exemplos, a seguir, se baseiam na versão externa (ou GNU), invocada através do comando /usr/bin/time.

Como direcionar a saída do comando para arquivos

Como comportamento padrão, a saída do time é colocada ao final da saída do comando que você executou com ele.
Para redirecionar a saída para um arquivo, veja o seguinte exemplo:

/usr/bin/time -o timelog.log sudo apt update

Para ver o resultado, use o comando cat:

cat timelog.log 
4.72user 0.43system 0:11.99elapsed 42%CPU (0avgtext+0avgdata 47476maxresident)k
14400inputs+557216outputs (8major+55843minor)pagefaults 0swaps

No exemplo acima, as estatísticas referentes ao comando “sudo apt update” são gravadas no arquivo “timelog.log”:
Repare que as opções dadas ao comando time, são feitas antes do comando que você deseja rodar.
Para não apagar os dados anteriores, contidos no arquivo, use a opção ‘append’. Com esta opção, o time acrescenta a nova saída ao arquivo, em vez de sobrepor todo o conteúdo anterior:

/usr/bin/time -a -o timelog.log sudo apt update
cat timelog.log

O resultado, abaixo, se refere a 4 execuções do comando acima:

0.78user 0.06system 0:02.76elapsed 30%CPU (0avgtext+0avgdata 43964maxresident)k
0inputs+155440outputs (0major+37247minor)pagefaults 0swaps
0.79user 0.05system 0:01.14elapsed 74%CPU (0avgtext+0avgdata 44888maxresident)k
0inputs+155408outputs (0major+37269minor)pagefaults 0swaps
0.85user 0.06system 0:01.23elapsed 74%CPU (0avgtext+0avgdata 44252maxresident)k
0inputs+155248outputs (0major+37174minor)pagefaults 0swaps
0.82user 0.06system 0:01.19elapsed 74%CPU (0avgtext+0avgdata 45080maxresident)k
0inputs+155248outputs (0major+37239minor)pagefaults 0swaps

Desta forma, é possível comparar as estatísticas de várias execuções, dentro do mesmo arquivo.

Opções de formatação da saída do comando time

Como você já sabe, ao final da execução o time (Bash built-in) exibe uma saída padrão de dados assim:

real    0m3.789s
user    0m0.912s
sys     0m0.076s

ou assim (GNU):

0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 2352maxresident)k
0inputs+0outputs (0major+110minor)pagefaults 0swaps

Neste tópico, vamos ver como melhorar isto.
Você pode usar uma série de opções para alterar a formatação e adequar a apresentação dos dados estatísticos às suas necessidades. Veja uma lista:

  • C — Argumentos usados de nome e linha de comando
  • D — Tamanho médio da área de dados não-compartilhada do processo (em KiB)
  • E — Tempo decorrido no formato de relógio
  • F — Número de page faults (falhas de página)
  • I — Número de entradas no sistema de arquivos feitas pelo processo
  • K — Média geral da memória usada pelo processo em KiB
  • M — Tamanho máximo do resident set do processo durante seu tempo de vida, em KiB.
  • O — Número de saídas geradas pelo processo
  • P — Percentual da CPU que o trabalho (ou job) recebeu
  • R — Número de page faults menores ou recuperáveis
  • S — Total de segundos da CPU usados pelo sistema no kernel mode
  • U — Total de segundos da CPU usados pelo sistema no user mode
  • W — Número de vezes em que o processo foi varrido da memória principal
  • X — Quantidade média de texto compartilhado no processo
  • Z — Tamanho da página do sistema em KiB
  • c — Quantidade de vezes em que processo foi alternado, baseado em contexto
  • e — Tempo real decorrido relacionado ao processo, em segundos
  • k — Número de sinais entregues ao processo
  • p — Tamanho médio do stack não compartilhado do processo em KiB
  • r — Número de mensagens socket recebidas pelo processo
  • s — Número de mensagens socket enviadas pelo processo
  • t — Tamanho médio do resident set do processo em KiB
  • w — Número de vezes em que o processo sofreu alternâncias no modo de execução voluntariamente
  • x — Status de saída do comando.
  • Veja alguns exemplos da formatação da saída do comando, a seguir.

    /usr/bin/time -f "\nResultado do time:\nTempo decorrido = %E, Entradas %I, Saídas %O" apt search weston
    

    Veja como ficou, nas 2 últimas linhas da saída abaixo:

    Sorting... Pronto
    Full Text Search... Pronto
    weston/testing 1.11.0-1 amd64
      reference implementation of a wayland compositor
    
    
    Resultado do time:
    Tempo decorrido = 0:00.77, Entradas 0, Saídas 0
    

    Altere o código, acima, usando outras opções da tabela anterior.
    Para inserir novas linhas e deixar o visual mais fácil de entender, use ‘\n’.

    Referências

    http://linux.about.com/od/commands/a/Example-Uses-Of-The-Command-Time.htm.

10 exemplos de uso do pidstat para analisar a performance do Linux

O pidstat é uma ferramenta de monitoramento, que torna possível acompanhar cada processo individualmente no Linux.
Pidstat quer dizer PID (Process ID) Statistics.
A ferramenta fornece várias informações, o que inclui o uso da CPU pelo proceso, o uso do disco e estatísticas de uso das threads associadas as tarefas executadas por cada processo.
pidstat tutorial featured image
Para poder executar este comando, você precisa instalar o pacote de ferramentas sysstat.
Ao final do texto, relacionei alguns links interessantes, caso você queira se aprofundar no assunto.
A caixa de pesquisa do site, no topo, à direita também pode ajudar você a encontrar outros artigos interessantes. Boa leitura!

Como instalar o sysstat

Usuários do Red Hat, Fedora ou outras distro baseadas nestas, podem usar o yum:

yum install sysstat

Quem for usuário do Debian, do Ubuntu, Mint etc. pode usar o apt-get:

sudo apt-get install sysstat

Ou o aptitude (padrão no Debian):

sudo aptitude install sysstat

Feito a instalação, vamos as dicas de uso…

Clique pra ler mais sobre as ferramentas do SYSSTAT
Clique pra ler mais sobre as ferramentas do SYSSTAT

Como ver estatísticas de TODOS os processos em execução

Para obter as estatísticas referentes a todos os processos use a opção -p ALL (note as maiúsculas), tal como você pode observar no exemplo abaixo.

pidstat -p ALL
Linux 3.13.0-39-generic (case-530U3C-530U4C-532U3C) 	25-11-2014 	_x86_64_	(4 CPU)

16:06:47      UID       PID    %usr %system  %guest    %CPU   CPU  Command
16:06:47        0         1    0,00    0,00    0,00    0,01     3  init
16:06:47        0         2    0,00    0,00    0,00    0,00     0  kthreadd
16:06:47        0         3    0,00    0,00    0,00    0,00     0  ksoftirqd/0
16:06:47        0         5    0,00    0,00    0,00    0,00     0  kworker/0:0H
16:06:47        0         7    0,00    0,03    0,00    0,03     3  rcu_sched
...
16:06:47        0     29597    0,00    0,00    0,00    0,00     3  kworker/3:1H
16:06:47        0     29599    0,00    0,00    0,00    0,00     3  irq/43-mei_me
16:06:47        0     31144    0,00    0,00    0,00    0,00     2  kworker/u16:1
16:06:47        0     31290    0,00    0,00    0,00    0,00     2  kworker/u17:1
16:06:47        0     31448    0,00    0,00    0,00    0,00     2  kworker/2:0

Acima, você pode observar as informações de uso da CPU para todos os processos em execução.
Se quiser, pode ver os valores referentes a um processo (PID) em particular:

pidstat -p 29597
Linux 3.13.0-39-generic (case-530U3C-530U4C-532U3C) 	25-11-2014 	_x86_64_	(4 CPU)

16:19:48      UID       PID    %usr %system  %guest    %CPU   CPU  Command
16:19:48        0     29597    0,00    0,00    0,00    0,00     3  kworker/3:1H

Se você é novato com o pacote sysstat, dê uma olhada no comando sar — que ajuda a entender estatísticas de performance.

O PID (identificador de processos ou process ID) é um número que os kernels dos sistemas operacionais — tais como o Mac OS X, Windows, Linux, UNIX etc. — usam para identificar cada processo.
Cada processo em execução no seu sistema tem um PID exlusivo.
A partir desta ID, é possível manipular um processo através de funções internas de aplicativos ou na linha de comando.

Como listar estatísticas de performance baseado no nome do processo

Para resolver este problema, use a opção do comando -C.

pidstat -C apache
Linux 3.13.0-39-generic (case-530U3C-530U4C-532U3C) 	25-11-2014 	_x86_64_	(4 CPU)

17:10:42      UID       PID    %usr %system  %guest    %CPU   CPU  Command
17:10:42        0      1342    0,00    0,00    0,00    0,00     2  apache2

O exemplo acima exibe as informações pros processos que cujos nomes contenham a palavra Apache. Experimente outras palavras.

Como repetir periodicamente a saída do comando

Para repetir um comando, dentro de um intervalo, acrescente um número correspondente às vezes em segundos.
Vamos reusar o exemplo anterior. Ao acrescentar o valor 1, ele passará a repetir o comando a cada 1 segundo. Veja:

pidstat -C apache 1
17:44:29      UID       PID    %usr %system  %guest    %CPU   CPU  Command

17:44:30      UID       PID    %usr %system  %guest    %CPU   CPU  Command
17:44:31        0      1342    0,00    1,00    0,00    1,00     2  apache2

Experimente outros valores. Use as teclas Ctrl + C para parar o comando.

Como exibir estatísticas de Entrada/Saída de processos

Para exibir o relatório estatístico de Entrada/Saída de um determinado processo, a cada 1 segundo, use a opção -d, da seguinte forma:

pidstat -p 10993 -d 1
Linux 3.13.0-39-generic (case-530U3C-530U4C-532U3C) 	25-11-2014 	_x86_64_(4 CPU)

19:41:19      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
19:41:20     1000     10993      0,00     96,00      0,00  firefox
19:41:21     1000     10993      0,00      0,00      0,00  firefox
19:41:22     1000     10993      0,00    128,00      0,00  firefox
19:41:23     1000     10993      0,00    256,00      0,00  firefox
19:41:24     1000     10993      0,00    160,00      0,00  firefox
19:41:25     1000     10993      0,00    160,00      0,00  firefox
19:41:26     1000     10993      0,00    160,00      0,00  firefox
19:41:27     1000     10993      0,00    128,00      0,00  firefox
^C
Média:      1000     10993      0,00    136,00      0,00  firefox

Entre os itens exibidos, estão o PID — informado na linha de comando, as taxas de leitura e gravação no disco em Kb/s etc.

Como mostrar atividades de paginação para processos específicos

A paginação é uma das técnicas permitidas pela gestão de memória no sistema.
Com a paginação, o computador armazena e recupera dados do sistema secundário de armazenamento para usar na memória principal.
A paginação permite que dados sejam armazenados “fragmentados” em disco e organizados contiguamente na memória principal, para uso imediato.
É parte importante da implementação da memória virtual.

Aqui, entra em uso a opção -r, conforme o exemplo abaixo, para exibir falhas de paginação e utilização da memória, referentes a uma determinada tarefa (PID). Veja:

pidstat -p 10993 -r 1
Linux 3.13.0-39-generic (case-530U3C-530U4C-532U3C) 	25-11-2014 	_x86_64_(4 CPU)

19:58:46      UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
19:58:47     1000     10993     22,00      0,00 1602560 432344  11,55  firefox
19:58:48     1000     10993     36,00      0,00 1602560 432592  11,56  firefox
19:58:49     1000     10993     27,00      0,00 1594364 432728  11,56  firefox
19:58:50     1000     10993     20,00      0,00 1594364 432992  11,57  firefox
19:58:51     1000     10993     27,00      0,00 1594364 432992  11,57  firefox
^C
Média:      1000     10993     26,40      0,00 1597642 432730  11,56  firefox

Como exibir comandos em execução e seus argumentos

O comportamento padrão do pidstat é mostrar apenas o nome do comando em execução, sem os detalhes do caminho e dos argumentos e opções dados.
Veja 2 exemplos. No primeiro, vou exibir as estatísticas do navegador Chrome. No segundo as estatística estarão mais detalhadas, com o acréscimo da opção -l:

pidstat -C chrome
Linux 3.13.0-40-generic (case-530U3C-530U4C-532U3C) 	26-11-2014 	_x86_64_	(4 CPU)

15:28:30      UID       PID    %usr %system  %guest    %CPU   CPU  Command
15:28:30     1000     10651    0,02    0,01    0,00    0,03     0  chrome
15:28:30     1000     10662    0,00    0,00    0,00    0,00     0  chrome
15:28:30     1000     10672    0,00    0,00    0,00    0,00     0  chrome
15:28:30     1000     10691    0,00    0,00    0,00    0,00     3  chrome
15:28:30     1000     10710    0,00    0,00    0,00    0,00     1  chrome
15:28:30     1000     10717    0,00    0,00    0,00    0,00     2  chrome
15:28:30     1000     10728    0,00    0,00    0,00    0,00     3  chrome
15:28:30     1000     10731    0,00    0,00    0,00    0,00     0  chrome
15:28:30     1000     10951    0,00    0,00    0,00    0,00     2  chrome

Agora, veja o comando com a exibição das opções e argumentos de execução, além do caminho completo para chegar ao Chrome:

 pidstat -C chrome -l

Linux 3.13.0-40-generic (case-530U3C-530U4C-532U3C) 	26-11-2014 	_x86_64_	(4 CPU)

15:28:17      UID       PID    %usr %system  %guest    %CPU   CPU  Command
15:28:17     1000     10651    0,02    0,01    0,00    0,03     2  /opt/google/chrome/chrome --incognito 
15:28:17     1000     10662    0,00    0,00    0,00    0,00     0  /opt/google/chrome/chrome --type=zygote --enable-crash-reporter=BFA8A187-CB5C-B8FF-FDD3-F84DA1B302F1 
15:28:17     1000     10672    0,00    0,00    0,00    0,00     3  /opt/google/chrome/chrome --type=zygote --enable-crash-reporter=BFA8A187-CB5C-B8FF-FDD3-F84DA1B302F1 
15:28:17     1000     10691    0,00    0,00    0,00    0,00     2  /opt/google/chrome/chrome --type=gpu-process --channel=10651.0.2015679771 --enable-crash-reporter=BFA8A187-CB5C-B8FF-FDD3-F84DA
15:28:17     1000     10710    0,00    0,00    0,00    0,00     1  /opt/google/chrome/chrome --type=renderer --disable-databases --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials
15:28:17     1000     10717    0,00    0,00    0,00    0,00     3  /opt/google/chrome/chrome --type=renderer --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials=AutoReloadExperimen
15:28:17     1000     10724    0,00    0,00    0,00    0,00     0  /opt/google/chrome/chrome --type=renderer --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials=AutoReloadExperimen
15:28:17     1000     10728    0,00    0,00    0,00    0,00     1  /opt/google/chrome/chrome --type=renderer --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials=AutoReloadExperimen
15:28:17     1000     10731    0,00    0,00    0,00    0,00     1  /opt/google/chrome/chrome --type=renderer --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials=AutoReloadExperimen

Exibir a saída a intervalos regulares por certo número de vezes

Você já sabe como estabelecer um intervalo, em segundos, para o pidstat fazer sua coleta de informações.
É possível, também, estabelecer um número fixo de vezes em que este processo deve ser repetido — assim, você não precisa interromper com Ctrl + C e ainda tem informações adicionais ao final do relatório.
Basta informar outro valor, ao final da linha de comando (após o número que define o tamanho do intervalo em segundos).
No exemplo, abaixo, o pidstat exibirá os resultados a cada intervalo de 2 segundos, 5 vezes:

pidstat -C chrome -l 2 5

Linux 3.13.0-40-generic (ultra-530U3C-530U4C-532U3C) 	26-11-2014 	_x86_64_	(4 CPU)
ATTENTION: default value of option force_s3tc_enable overridden by environment.

16:06:50      UID       PID    %usr %system  %guest    %CPU   CPU  Command
16:06:52     1000     11471  172,55   28,43    0,00  200,98     0  /opt/google/chrome/chrome 
16:06:52     1000     11484    1,96    1,96    0,00    3,92     2  /opt/google/chrome/chrome --type=zygote --enable-crash-reporter=BFA8A187-CB5C-B8FF-FDD3-F84DA1B302F1 
16:06:52     1000     11493    0,00    0,49    0,00    0,49     0  /opt/google/chrome/chrome --type=zygote --enable-crash-reporter=BFA8A187-CB5C-B8FF-FDD3-F84DA1B302F1 
16:06:52     1000     11512    7,84    4,41    0,00   12,25     3  /opt/google/chrome/chrome --type=gpu-process --channel=11471.0.1175412254 --enable-crash-reporter=BFA8A187-CB5C-B8FF-FDD3-F84DA

16:06:52      UID       PID    %usr %system  %guest    %CPU   CPU  Command
16:06:54     1000     11471  245,00    9,00    0,00  254,00     3  /opt/google/chrome/chrome 
16:06:54     1000     11512    7,00    1,50    0,00    8,50     0  /opt/google/chrome/chrome --type=gpu-process --channel=11471.0.1175412254 --enable-crash-reporter=BFA8A187-CB5C-B8FF-FDD3-F84DA
16:06:54     1000     11530   18,00    1,00    0,00   19,00     0  /opt/google/chrome/chrome --type=renderer --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials=DomRel-Enable/enabl
16:06:54     1000     11537   48,50    3,50    0,00   52,00     3  /opt/google/chrome/chrome --type=renderer --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials=AutoReloadExperimen

16:06:54      UID       PID    %usr %system  %guest    %CPU   CPU  Command
16:06:56     1000     11471   62,50    9,50    0,00   72,00     1  /opt/google/chrome/chrome 
16:06:56     1000     11512    1,50    1,50    0,00    3,00     1  /opt/google/chrome/chrome --type=gpu-process --channel=11471.0.1175412254 --enable-crash-reporter=BFA8A187-CB5C-B8FF-FDD3-F84DA
16:06:56     1000     11530   34,50    2,00    0,00   36,50     2  /opt/google/chrome/chrome --type=renderer --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials=DomRel-Enable/enabl
16:06:56     1000     11537   63,00    5,00    0,00   68,00     2  /opt/google/chrome/chrome --type=renderer --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials=AutoReloadExperimen

16:06:56      UID       PID    %usr %system  %guest    %CPU   CPU  Command
16:06:58     1000     11471   15,50    4,00    0,00   19,50     0  /opt/google/chrome/chrome 
16:06:58     1000     11512    4,50    2,50    0,00    7,00     0  /opt/google/chrome/chrome --type=gpu-process --channel=11471.0.1175412254 --enable-crash-reporter=BFA8A187-CB5C-B8FF-FDD3-F84DA
16:06:58     1000     11530    4,50    0,00    0,00    4,50     2  /opt/google/chrome/chrome --type=renderer --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials=DomRel-Enable/enabl
16:06:58     1000     11537   75,00    5,50    0,00   80,50     2  /opt/google/chrome/chrome --type=renderer --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials=AutoReloadExperimen

16:06:58      UID       PID    %usr %system  %guest    %CPU   CPU  Command
16:07:00     1000     11471    4,00    2,50    0,00    6,50     3  /opt/google/chrome/chrome 
16:07:00     1000     11512    5,50    1,00    0,00    6,50     3  /opt/google/chrome/chrome --type=gpu-process --channel=11471.0.1175412254 --enable-crash-reporter=BFA8A187-CB5C-B8FF-FDD3-F84DA
16:07:00     1000     11537   15,00    1,50    0,00   16,50     2  /opt/google/chrome/chrome --type=renderer --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials=AutoReloadExperimen

Média:       UID       PID    %usr %system  %guest    %CPU   CPU  Command
Média:      1000     11471  100,20   10,76    0,00  110,96     -  /opt/google/chrome/chrome 
Média:      1000     11484    0,40    0,40    0,00    0,80     -  /opt/google/chrome/chrome --type=zygote --enable-crash-reporter=BFA8A187-CB5C-B8FF-FDD3-F84DA1B302F1 
Média:      1000     11493    0,00    0,10    0,00    0,10     -  /opt/google/chrome/chrome --type=zygote --enable-crash-reporter=BFA8A187-CB5C-B8FF-FDD3-F84DA1B302F1 
Média:      1000     11512    5,28    2,19    0,00    7,47     -  /opt/google/chrome/chrome --type=gpu-process --channel=11471.0.1175412254 --enable-crash-reporter=BFA8A187-CB5C-B8FF-FDD3-F84DA
Média:      1000     11530   11,35    0,60    0,00   11,95     -  /opt/google/chrome/chrome --type=renderer --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials=DomRel-Enable/enabl
Média:      1000     11537   40,14    3,09    0,00   43,23     -  /opt/google/chrome/chrome --type=renderer --enable-deferred-image-decoding --lang=pt-BR --force-fieldtrials=AutoReloadExperimen

Ao final, o pidstat mostra as médias estatísticas.

Como exibir estatísticas de processos específicos e seus descendentes

Use a opção -T para especificar o processo CHILD (descendente, filho) ou as TASKS (tarefas).
No exemplo, as estatísticas serão listadas por tarefas (TASKS) e, se for o caso, com suas descendências (CHILDren).
Opcionalmente, você pode especificar -T ALL.

Clique pra ler mais sobre as ferramentas do SYSSTAT
Clique pra ler mais sobre as ferramentas do SYSSTAT

Como expor estatísticas de processos dependentes no formato de árvore

Com o uso da opção -t, você pode listar as estatísticas em formato de árvore, conforme exemplo abaixo (estatísticas de uso da CPU do Firefox e suas threads):

pidstat -t -C "firefox"

Linux 3.13.0-40-generic (case-530U3C-530U4C-532U3C) 	26-11-2014 	_x86_64_	(4 CPU)

18:24:59      UID      TGID       TID    %usr %system  %guest    %CPU   CPU  Command
18:24:59     1000      2508         -   43,19    2,04    0,00   45,23     1  firefox
18:24:59     1000         -      2508   38,90    1,15    0,00   40,05     1  |__firefox
18:24:59     1000         -      3871    0,00    0,00    0,00    0,00     2  |__firefox

Veja o exemplo com o “mysql”:

pidstat -t -C "mysql"

Note as colunas TGID (thread group leader) e TID (identificação da thread sendo monitorada).

Linux 3.13.0-40-generic (case-530U3C-530U4C-532U3C) 	27-11-2014 	_x86_64_	(4 CPU)

13:12:39      UID      TGID       TID    %usr %system  %guest    %CPU   CPU  Command
13:12:39      117      1244         -    0,04    0,03    0,00    0,08     2  mysqld
13:12:39      117         -      1244    0,00    0,00    0,00    0,00     2  |__mysqld
13:12:39      117         -      1271    0,00    0,00    0,00    0,00     1  |__mysqld
13:12:39      117         -      1272    0,00    0,00    0,00    0,01     0  |__mysqld
13:12:39      117         -      1273    0,00    0,00    0,00    0,00     2  |__mysqld
13:12:39      117         -      1274    0,00    0,00    0,00    0,00     1  |__mysqld
13:12:39      117         -      1275    0,00    0,00    0,00    0,00     1  |__mysqld
13:12:39      117         -      1276    0,00    0,00    0,00    0,00     1  |__mysqld
13:12:39      117         -      1277    0,00    0,00    0,00    0,00     3  |__mysqld
13:12:39      117         -      1278    0,00    0,00    0,00    0,00     0  |__mysqld
13:12:39      117         -      1279    0,00    0,00    0,00    0,00     1  |__mysqld
13:12:39      117         -      1280    0,00    0,00    0,00    0,00     1  |__mysqld
13:12:39      117         -      1329    0,01    0,00    0,00    0,01     3  |__mysqld
13:12:39      117         -      1330    0,02    0,00    0,00    0,02     0  |__mysqld
13:12:39      117         -      1331    0,00    0,00    0,00    0,00     0  |__mysqld
13:12:39      117         -      1671    0,00    0,00    0,00    0,00     1  |__mysqld

Como exibir as informações do pidstat horizontalmente, em uma única linha

Se você pedir ao pidstat para reportar mais de um dado estatístico, o aplicativo irá relacionar um atrás do outro.
No exemplo, que segue, ele vai separar as informações da seguinte forma: exibir primeiro estatísticas de performance para a opção -r; em seguida, a opção -u e, por fim, a opção -d.

pidstat -rud

Contudo, se você desejar ver todas estas informações em uma única linha para cada processo individual, use a opção -h:

pidstat -rud -h | head
Linux 3.13.0-40-generic (case-530U3C-530U4C-532U3C) 	27-11-2014 	_x86_64_	(4 CPU)

#      Time   UID       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
 1417106085     0         1    0,01    0,01    0,00    0,02     0      4,26      0,00   33904   3188   0,09     -1,00     -1,00     -1,00  init
 1417106085     0         3    0,00    0,00    0,00    0,00     0      0,00      0,00       0      0   0,00     -1,00     -1,00     -1,00  ksoftirqd/0
 1417106085     0         7    0,00    0,03    0,00    0,03     2      0,00      0,00       0      0   0,00     -1,00     -1,00     -1,00  rcu_sched
 1417106085     0         8    0,00    0,02    0,00    0,02     1      0,00      0,00       0      0   0,00     -1,00     -1,00     -1,00  rcuos/0
 1417106085     0         9    0,00    0,01    0,00    0,01     2      0,00      0,00       0      0   0,00     -1,00     -1,00     -1,00  rcuos/1
 1417106085     0        10    0,00    0,01    0,00    0,01     3      0,00      0,00       0      0   0,00     -1,00     -1,00     -1,00  rcuos/2
 1417106085     0        11    0,00    0,01    0,00    0,01     1      0,00      0,00       0      0   0,00     -1,00     -1,00     -1,00  rcuos/3

Divirta-se! Compartilhe a nerdice e comente!

Referências: