Чтение загрузки процессора
Я строю 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 будет использоваться вместо