Есть ли способ получить совокупное время ЦП, использованное за некоторый интервал для всех процессов, включая процессы, которые больше не существуют в конце интервала.
top -S
может сделать это, но это не дает вам понимания реальных процессов, которые использовали время. Например, первые несколько элементов top -S
отсортированные по времени, выглядят так:
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
Из этого списка firefox
и, в некоторой степени, compiz
- единственные два, где процессорное время действительно использовалось главным образом этим процессом. Такие вещи, как upstart
и bash
имеют огромные значения только потому, что многие тяжелые процессы, такие как задачи компиляции или различные демоны, запускались из командной строки или upstart, и когда эти процессы прекращались, их время ЦП было назначено их родителю (и т.д. Рекурсивно). Таким образом, сам bash
, вероятно, использовал очень мало процессорного времени.
Мне бы хотелось получить представление о системе, которая фиксирует базовый процесс, который использует процессорное время, например, должна быть строка /usr/bin/gcc
если я много компилировал за этот интервал.