Прочитайте /proc/cpuinfo
, чтобы узнать количество процессоров / ядер, доступных для систем.Вызовите getloadavg()
(или, альтернативно, прочитайте /proc/loadavg
), возьмите первое значение, умножьте его на 100 (для преобразования в проценты), разделите на количество процессоров / ядер.Если значение больше 100, обрежьте его до 100. Готово.
Соответствующая документация: man getloadavg
и man 5 proc
NB Средняя загрузка, обычная для * NIX систем, может быть большечем 100% (на процессор / ядро), поскольку фактически измеряет количество процессов, готовых к запуску планировщиком.С Windows-подобной метрикой ЦП, когда нагрузка составляет 100%, вы на самом деле не знаете, является ли это оптимальным использованием ресурсов ЦП или система перегружена.В * NIX оптимальное использование загрузки процессора даст вам значение ~ 1,0 (или 2,0 для двойной системы).Если значение намного превышает число процессоров / ядер, возможно, вы захотите подключить дополнительные процессоры к коробке.
В противном случае копайте файловую систему /proc
.