Получить статистику использования CPU из программы C

Я хочу прочитать статистику использования CPU из программы C, меня интересует процент использования процессора, время кражи и т. Д. Эти статистические данные отображаются в третьей строке из top команды.

Я попытался проанализировать вывод top с awk ( top -n 1 -b | awk '{print $0}' ), но кажется, что top дает всегда одни и те же «вымышленные» значения, прежде чем он начнет показывать правильную статистику.

Есть ли способ из кода или путем разбора вывода некоторой команды для получения статистики использования ЦП?

Редактировать:

Платформа – Linux

Спасибо.

2 Solutions collect form web for “Получить статистику использования CPU из программы C”

Вы хотите прочитать первые несколько строк /proc/stat . Вам нужно будет прочитать его дважды, измеренное время в отдельности и вычесть первый набор чисел из второго. Строки выглядят так:

 cpu 1526724 408013 600675 541100340 2861417 528 14531 0 0 0 cpu0 344507 77818 251244 134816146 1119991 324 13283 0 0 0 cpu1 502614 324065 179301 133991407 1631824 136 906 0 0 0 cpu2 299080 3527 79456 136144067 103208 59 255 0 0 0 cpu3 380521 2602 90672 136148719 6393 7 86 0 0 0 intr 2111239193 344878476 16943 ... 

Первая строка является совокупной для всех ядер. Следующие строки показывают каждое ядро. Когда вы видите строку, начинающуюся с intr , вы знаете, чтобы остановить синтаксический анализ.

Каждый номер – это количество времени, затраченного ЦП в конкретном состоянии. Единицы обычно составляют сотые доли секунды. Поля – это user , nice , system , idle , iowait , softirq , softirq , steal , guest и guest_nice .

Авторитарная документация – это, конечно, исходный код. Если у вас есть копия исходного кода ядра Linux, посмотрите на fs/proc/stat.c , в частности на функцию show_stat .

В Интернете есть пример , показывающий, как читать /proc/pid/stat в C.

Вы можете прочитать значения utime или stime в два разных момента и вычислить требуемую статистику использования процессора. (Я думаю, что top использует эти необработанные данные.)

(Я забыл: это специфический для Linux).

  • Зачем обрабатывать CPU% Использование больше, чем общее время процессора
  • Верхний вид леса с фильтром, могу ли я включить всех детей?
  • Можно ли заморозить порядок задач в htop?
  • Как я могу перенаправить вывод в файл, когда программа построена с помощью библиотеки ncurses
  • Как перенаправить максимальный результат на один процессор в файл?
  • Почему я не могу использовать весь 100% -ный потенциал процессора?
  • Есть ли способ увидеть использование процессором программ в crontab?
  • вывод вершины усекает до 80 столбцов при запуске cron
  • Процент CPU одного процесса
  • top -bn1 не дает правильного использования ЦП
  • Периодически получать использование ЦП для одного процесса
  • Linux и Unix - лучшая ОС в мире.