Чтение загрузки процессора
Я строю Linux, веб-монитор ресурсов.
Сейчас я с нетерпением жду использования:
df
для чтения статуса использования HDD/proc/meminfo
(через кошку) для чтения состояния ОЗУmpstat
(из пакета sysstat) для чтения загрузки процессора
В то время как df
а также /proc/meminfo
возвращает данные практически мгновенно, mpstat
задержки для заданного интервала - с минимально допустимым значением 1 (в секундах).
Есть ли в режиме реального времени использование процессора, или есть способ сделать mpstat
вернуть "мгновенно"?
вывод mpstat:
[psycketom@stone ~]# mpstat -P ALL 1 1
Linux 3.5.4-1-ARCH (stone) 03/05/2013 _x86_64_ (1 CPU)
11:33:15 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11:33:16 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
11:33:16 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
Average: 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
1 ответ
Ты можешь использовать top
в пакетном режиме и одной итерации:
top -bn 1
Я бы также использовал free
вместо разбора meminfo
,
Другой способ заключается в использовании ps
добавьте% ЦП каждого процесса и разделите на количество ядер, которые есть на вашей машине:
ps axo pcpu |
gawk -v cores=`grep -m 1 cores /proc/cpuinfo | cut -d ' ' -f 3` \
-v cpus=`grep -c processor /proc/cpuinfo` \
'{k+=$1}END{print k/(cores * cpus);}'
Если ваша система имеет только одно ядро, приведенный выше скрипт завершится с ошибкой, в результате чего:
gawk: cmd. line:1: (FILENAME=- FNR=83) fatal: division by zero attempted
Чтобы заставить его работать, измените k/(cores * cpus)
в k/(cores==""?1:cores * cpus)
, Это проверит ли cores
переменная не пуста, если она есть, 1
будет использоваться вместо