Beban CPU + Frekuensi per inti di terminal linux?

0

Saya melakukan komputasi ilmiah dan saya perlu mengawasi frekuensi cpu dan memuat setiap core (ada 2 core, di Ubuntu 14,04 w / Gnome3). Saya dapat melihat frekuensi dengan skrip bash ini:

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 

Outputnya terlihat seperti ini: CPU MHz: 800 2401

Dan lihat beban CPU saat ini dengan:

glances -1rmnd

Saya ingin mendapatkan beban saat ini untuk setiap inti (dalam contoh%) bersama dengan frekuensi di jendela terminal yang sama dan format yang ringkas. Idealnya akan terlihat seperti ini:

CPU MHz: 800 2401 Load: 12% 100%

Setiap saran dipersilahkan, bahkan solusi yang berbeda, atau program. Ceria / J

Jonatan Öström
sumber

Jawaban:

0

Yah saya menemukan solusi setelah googling dan mendapatkan bantuan. Saya akan memposting jika untuk referensi. Ini skrip bash saya yang dimodifikasi:

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

Menggunakan sar -P ALL 1 1dari sysstatpaket memberi Anda hasil cetakan dari hal-hal pemrosesan. awkmemilih baris 5 dan 6, dan kolom 3, sementara tr '\n' '\t'mengubah baris baru menjadi sebuah tab. Output di jendela terminal adalah:

        _cpu0_ _cpu1_
MHz:     2000   2400 
Load:    3.92   1.00

Fitur kursor berkedip dari pernyataan-if adalah karena angka-angka dapat statis untuk waktu yang lama di bawah beban.

Jonatan Öström
sumber