Расчет загрузки процессора на многоядерной машине Linux с использованием C

Я работаю над программой, которая показывает процент всех процессов, запущенных на машине с Linux. Проблема в том, что процент, который я получаю, часто отличается от отображаемого top команда.

Я искал много часов в Интернете, но то, что я нахожу, почти всегда одна и та же формула

100 * (stime + utime)/ (totalCPUTime - processStartTime),

Я получаю общее значение CPUTime, суммирующее 7 значений ЦП в /proc/stat, в то время как stime, utime а также processStartTime значения взяты из формы /proc/<pid>/stat, Я делаю что-то неправильно? Влияет ли факт, что я запускаю программу на многоядерном компьютере, как-то влияет на результат?

Сомоне знает, как верх рассчитывает это значение?

Спасибо

1 ответ

Если вы хотите знать, какой топ вы должны посмотреть в исходном коде:)

репозиторий top.c cvs

Домашняя страница procps

Другие вопросы по тегам