Я занимаюсь научными вычислениями, и мне нужно следить за частотой процессора и нагрузкой на каждое ядро (в Ubuntu 14.04 с Gnome3 есть 2 ядра). Я вижу частоту с помощью этого скрипта bash:

echo ""
while true; do
 if [ ! -z $ind ] ; then ind=; else ind="."; fi
 f0=$(sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq)
 f1=$(sudo cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq)
 printf " CPU MHz: %5i %5i $ind \r" $(($f0/1000)) $(($f1/1000)) 
 sleep 0.5
done 

Выход выглядит так: CPU MHz: 800 2401

И увидеть текущую загрузку процессора с помощью:

glances -1rmnd

Я хотел бы получить текущую нагрузку для каждого ядра (например, в%) вместе с частотой в том же окне терминала и в компактном формате. В идеале это будет выглядеть так:

CPU MHz: 800 2401 Load: 12% 100%

Любой совет приветствуется, даже другое решение или программы. Приветствия /J

1 ответ1

0

Ну, я нашел решение после поиска в Google и получения некоторой помощи. Выложу если для справки. Это мой модифицированный скрипт bash:

while true; do
 load=$(sar -P ALL 1 1 | awk 'NR==5,NR==6 {print $3}' | tr '\n' '\t')
 if [ ! -z $ind ] ; then ind=; else ind="_"; fi
 f0=$(sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq)
 f1=$(sudo cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq)
 clear
 echo ""
 printf "\t_cpu0_ _cpu1$ind\n"
 printf "MHz:\t%5i  %5i \n" $(($f0/1000)) $(($f1/1000)) 
 printf "Load:\t $load"
done

Использование sar -P ALL 1 1 из пакета sysstat дает вам распечатку материала для обработки. awk выбирает строки 5 и 6 и столбец 3, а tr '\n' '\t' преобразует новую строку во вкладку. Вывод в окне терминала:

        _cpu0_ _cpu1_
MHz:     2000   2400 
Load:    3.92   1.00

Функция мигающего курсора из оператора if заключается в том, что числа могут быть статичными в течение длительного времени под нагрузкой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .