Я хочу прочитать статистику использования ЦП из программы на Си, меня интересует процент использования ЦП, время кражи и т. Д. Эта статистика отображается в 3-й строке top
команды.
Я попытался проанализировать top
вывод с помощью awk
( top -n 1 -b | awk '{print $0}'
), но кажется, что он top
дает всегда одни и те же «вымышленные» значения, прежде чем он начнет показывать правильную статистику.
Есть ли способ из кода или путем анализа вывода какой-либо команды, чтобы получить статистику использования ЦП?
Редактировать:
Платформа Linux
Спасибо.
monitoring
cpu
c
top
0xFF
источник
источник
Ответы:
Вы хотите прочитать первые несколько строк
/proc/stat
. Вам нужно будет прочитать его дважды, с разницей в измеренном времени, и вычесть первый набор чисел из второго. Линии выглядят так:Первая строка является агрегированной для всех ядер. Следующие строки показывают каждое ядро. Когда вы видите строку, которая начинается с
intr
, вы знаете, чтобы прекратить анализ.Каждое число - это количество времени, которое процессор провел в определенном состоянии. Единицы обычно составляют сотые доли секунды. Поля
user
,nice
,system
,idle
,iowait
,irq
,softirq
,steal
,guest
, иguest_nice
.Официальная документация - это, конечно, исходный код. Если у вас есть копия исходного кода ядра Linux, обратите внимание
fs/proc/stat.c
, в частности, наshow_stat
функцию.источник
В Интернете есть пример , показывающий, как читать
/proc/pid/stat
на C.Вы можете прочитать
utime
илиstime
значения в два разных момента и вычислить желаемую статистику использования процессора. (Я думаю, чтоtop
использует эти необработанные данные тоже.)(Я забыл: это специфично для Linux.)
источник