История изменений
Исправление alman, (текущая версия) :
А его точно нужно считать? Разве нельзя посмотреть /proc/loadavg?
Вот этот пример вообще непонятен. Откуда код? На первый взгляд он бессмысленный.
Я думаю что считать надо как соотношение времени простоя относительно общего времени. Например, число тактов в простое за 10 сек, за минуту, за пять минут. По каждому процессорному ядру в отдельности.
Т.е. перед уходом в halt читать счётчик тактов, а в момент любого прерывания читать этот счётчик заново и вычитать из него предыдущее значение. Таким образом станет известно сколько тактов процессор «отдыхал». А затем по таймеру считать соотношение простоя к общему времени. Разумеется, все вычисления в тактах.
Число задач не коррелирует с загрузкой процессора. Все задачи могут ждать ввода/вывода и не грузить процессор. Что, кстати, является вполне нормальной ситуацией в подавляющем большинстве применений. Иначе ноутбуки бы разряжались в 10 раз быстрее.
Исходная версия alman, :
А его точно нужно считать? Разве нельзя посмотреть /proc/loadavg?
Вот это пример вообще непонятен. Откуда код? На первый взгляд он бессмысленный.
Я думаю что считать надо как соотношение времени простоя относительно общего времени. Например, число тактов в простое за 10 сек, за минуту, за пять минут. По каждому процессорному ядру в отдельности.
Т.е. перед уходом в halt читать счётчик тактов, а в момент любого прерывания читать этот счётчик заново и вычитать из предыдущего значение. Таким образом станет известно сколько тактов процессор «отдыхал». А затем по таймеру считать соотношение простоя к общему времени. Разумеется, все вычисления тактах.
А число задач не коррелирует с загрузкой процессора. Все задачи могут ждать ввода/вывода и не грузить процессор. Что, кстати, является вполне нормальной ситуацией в подавляющем большинстве применений.