Я пытаюсь получить общее использование CPU в %. Сначала я должен запустить путем высказывания, что "вершина" просто не сделает, поскольку существует задержка между дампами CPU, требуется 2 дампа и несколько секунд, который подвешивает мою программу (я не хочу давать ей ее собственный поток),
следующей вещью, что я попробовал, является "PS", который мгновенен, но всегда дает очень высокое количество всего (20 +) и когда я на самом деле заставил свой CPU делать что-то, что это осталось приблизительно в 20...
Есть ли какой-либо другой способ, которым я мог получить общее использование CPU? Не имеет значения, если это за вторые или более длительные промежутки времени... Более длительные периоды были бы более полезными, все же.
cat /proc/stat
Я согласен с этим ответом выше.Строка cpu в этом файле показывает общее количество "jiffies", которое ваша система потратила на выполнение различных типов обработки.
Что вам нужно сделать, так это сделать 2 чтения этого файла, разделенных любым требуемым интервалом времени. Числа представляют собой возрастающие значения (с учетом смены позиции на целое число), поэтому для получения% cpu вам необходимо подсчитать, сколько джиффов прошло за ваш интервал, по сравнению с тем, сколько джиффов было потрачено на выполнение работы.
например. Предположим, в 14:00:00 у вас есть
cpu 4698 591 262 8953 916 449 531
total_jiffies_1 = (сумма всех значений) = 16400
work_jiffies_1 = (сумма пользователей, красиво, система = первые 3 values) = 5551
и в 14:00:05 у вас будет
cpu 4739 591 289 9961 936 449 541
total_jiffies_2 = 17506
work_jiffies_2 = 5619
Таким образом, процент использования процессора за этот период составляет:
work_over_period = work_jiffies_2 - work_jiffies_1 = 68
total_over_period = total_jiffies_2 - total_jiffies_1 = 1106
% cpu = work_over_period / total_over_period * 100 = 6,1%
Надеюсь, это немного поможет.
Я предлагаю запустить два файла ...
/ proc / stat и / proc / cpuinfo.
http://www.mjmwired.net/kernel/Documentation/filesystems/proc.txt
Попробуйте прочитать /proc/loadavg
. Первые три числа - это количество реально запущенных процессов (т.е. использующих ЦП), усредненное за последние 1, 5 и 15 минут соответственно.
Прочтите / proc / cpuinfo
, чтобы узнать количество процессоров / ядер, доступных для системы.
Вызовите getloadavg ()
(или, альтернативно, прочтите / proc / loadavg
), возьмите первое значение, умножьте его на 100 (для преобразования в проценты), разделите на количество CPU / ядра. Если значение больше 100, обрежьте его до 100. Готово.
Соответствующая документация: man getloadavg
и man 5 proc
Примечание. Средняя нагрузка, обычная для систем * NIX, может быть более 100% (на процессор / ядро), потому что она фактически измеряет количество процессов, готовых к запуску планировщиком. С метрикой ЦП, подобной Windows, когда загрузка составляет 100%, вы действительно не знаете, оптимально ли это использовать ресурсы ЦП или система перегружена. Под * NIX оптимальное использование CPU loadavg даст вам значение ~ 1.0 (или 2.0 для двойной системы). Если значение намного больше, чем число ЦП / ядер, вы можете подключить дополнительные ЦП к коробке.
В противном случае копайте файловую систему / proc
.