Existe alguma maneira de obter o tempo de CPU cumulativo usado, durante algum intervalo, de todos os processos, incluindo processos que não existem mais no final do intervalo.
top -S
pode fazer isso, mas não fornece informações sobre os processos reais que usaram o tempo. Por exemplo, as primeiras entradas de top -S
ordenadas por hora são assim:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1630 beeonr 20 0 46472 4212 3076 S 0.0 0.0 624:16.94 upstart
12394 beeonr 20 0 28264 9672 2164 S 0.0 0.1 340:06.54 bash
1317 root 20 0 715100 79976 65224 S 1.3 0.5 177:59.66 Xorg
3199 beeonr 20 0 1553868 306368 51220 S 0.3 1.9 130:03.08 compiz
27026 beeonr 20 0 9915552 842076 169492 S 0.3 5.2 62:02.38 firefox
Fora dessa lista, firefox
e, até certo ponto, compiz
são os únicos em que o tempo de CPU foi realmente usado principalmente por esse processo. Coisas como upstart
e bash
têm valores enormes apenas porque muitos processos pesados como tarefas de compilação ou vários daemons eram executados a partir da linha de comando ou quando esses processos morriam, seu tempo de CPU era atribuído a seus pais (e assim por diante) recursivamente). Então bash
em si provavelmente usou muito pouco tempo de CPU.
Eu gostaria de ver o sistema que captura o processo subjacente que usou o tempo de CPU, por exemplo, deve haver uma linha /usr/bin/gcc
se eu fiz muita compilação no intervalo.
Tags performance top linux cpu-usage