Ответ 1
Если вам действительно нужен интерфейс c, используйте getloadavg()
, который также работает в unixes без /proc
.
Он имеет справочную страницу со всеми подробностями.
В linux есть встроенная функция библиотеки C для получения загрузки процессора на компьютере? Предположительно, я мог бы написать свою собственную функцию для открытия и разбора файла в /proc, но кажется, что должен быть лучший способ.
Если вам действительно нужен интерфейс c, используйте getloadavg()
, который также работает в unixes без /proc
.
Он имеет справочную страницу со всеми подробностями.
Предпочтительным способом получения информации о загрузке ЦП на Linux является чтение из /proc/stat, /proc/loadavg и /proc/uptime. Все обычные утилиты linux, такие как верхний, используют этот метод.
на странице руководства proc (5):
/proc/loadavg
The first three fields in this file are load average figures
giving the number of jobs in the run queue (state R) or waiting
for disk I/O (state D) averaged over 1, 5, and 15 minutes. They
are the same as the load average numbers given by uptime(1) and
other programs. The fourth field consists of two numbers sepaâ
rated by a slash (/). The first of these is the number of curâ
rently executing kernel scheduling entities (processes,
threads); this will be less than or equal to the number of CPUs.
The value after the slash is the number of kernel scheduling
entities that currently exist on the system. The fifth field is
the PID of the process that was most recently created on the
system.
Я понимаю, что синтаксический анализ содержимого /proc является официальным интерфейсом для такого рода вещей (есть несколько файлов, которые действительно должны быть проанализированы перед представлением пользователю).
"Средняя загрузка" может быть не очень полезной. Мы считаем, что это ограниченное использование, так как оно фактически не говорит вам, сколько процессор используется, только среднее количество задач, "готовых к запуску". "Готов к запуску" несколько субъективен, но не очень полезен, поскольку он часто включает процессы, ожидающие ввода-вывода.
В системах с занятостью мы видим среднее значение нагрузки 20+ на машинах с 8 ядрами, и все же процессоры относительно простаивают.
Если вы хотите посмотреть, какой процессор используется, посмотрите на различные файлы в/proc