CPU Load + Freqüência por núcleo no terminal linux?

0

Eu estou fazendo computação científica e preciso ficar de olho na freqüência e carga da CPU de cada núcleo (existem 2 núcleos, no Ubuntu 14.04 w / Gnome3). Eu posso ver a frequência com este script 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 

A saída é assim:   CPU MHz: 800 2401

E veja a carga atual da CPU com:

glances -1rmnd

Gostaria de obter a carga atual de cada núcleo (por exemplo,%) juntamente com a frequência na mesma janela de terminal e um formato compacto. Idealmente, ficaria assim:

CPU MHz: 800 2401 Load: 12% 100%

Qualquer conselho é bem-vindo, até mesmo soluções ou programas diferentes. Felicidades / J

    
por Jonatan Öström 09.04.2015 / 15:39

1 resposta

0

Bem, encontrei uma solução depois de pesquisar e obter ajuda. Eu vou postar se for referência. Este é o meu script bash modificado:

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

Usar sar -P ALL 1 1 do pacote sysstat fornece uma impressão de material de processamento. awk seleciona as linhas 5 e 6 e coluna 3, enquanto tr '\n' '\t' transforma uma nova linha em uma guia. A saída em uma janela de terminal é:

        _cpu0_ _cpu1_
MHz:     2000   2400 
Load:    3.92   1.00

O recurso de cursor piscante da instrução if é porque os números podem ser estáticos por um longo tempo sob carga.

    
por 09.04.2015 / 17:16