Eu tenho uma máquina incorporada baseada em ARM baseada na placa S3C2416. De acordo com as especificações que tenho disponíveis, deve haver um ARM9 de 533 MHz (conforme ARM926EJ-S /proc/cpuinfo
), no entanto, o software em execução "parece" lento, em comparação com o mesmo software no meu telefone Android com uma CPU ARM de 528 MHz.
/proc/cpuinfo
me diz que o BogoMIPS é 266,24. Eu sei que não devo confiar no BogoMIPS em relação ao desempenho ("Bogo" = falso), no entanto, gostaria de obter uma medida da velocidade real da CPU. No x86, eu poderia usar a rdtsc
instrução para obter o contador de carimbo de data / hora, esperar um segundo (suspensão (1)), ler o contador novamente para obter uma aproximação da velocidade da CPU e, de acordo com minha experiência, esse valor estava próximo o suficiente para a velocidade real da CPU.
Como posso encontrar a velocidade real da CPU de um determinado processador ARM?
Atualizar
Encontrei esta calculadora Pi simples , que compilei para o meu telefone Android e a placa ARM. Os resultados são os seguintes:
S3C2416
# cat /proc/cpuinfo
Processor : ARM926EJ-S rev 5 (v5l)
BogoMIPS : 266.24
Features : swp half fastmult edsp java
...
#./pi_arm 10000
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
...
8.50 sec. (real time)
Android
# cat /proc/cpuinfo
Processor : ARMv6-compatible processor rev 2 (v6l)
BogoMIPS : 527.56
Features : swp half thumb fastmult edsp java
# ./pi_android 10000
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
...
5.95 sec. (real time)
Portanto, parece que o ARM926EJ-S é mais lento que o meu telefone Android, mas não duas vezes mais lento como eu poderia esperar pelos números do BogoMIPS. Ainda não tenho certeza sobre a velocidade do clock da CPU do ARM9.
266.24*2=532.48
Então parece que está morto. Minha CPU ARM de 480 MHz obtém 239,2439.2*2=478.4
,.Respostas:
Afinal, o relógio de um S3C2416 se parece com o de um S3C2443 ou de processadores similares de sua família. O código fonte do Linux sugere que há vários relógios intimamente relacionados.
Snippet de escolha:
Atualização do OP
Eu estava procurando por essa saída
dmesg
, mas não consegui encontrar nada - admesg
saída estava cheia de mensagens de depuração e o início estava ausente. Claramente, o buffer de mensagens do kernel era muito pequeno para reter todas as mensagens até eu conectar por telnet. Ao colocar/bin/dmesg > /tmp/dmesg.log
no início do processo de inicialização, consegui obter essa saída, confirmando o que queria saber:fonte
Tente
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
.No meu android, ele lê 1113600, então isso é em kHz .
fonte
ls -l /sys/devices/system/cpu/cpu0/
está me dando zero resultados. Parece que a placa não suporta escala de frequência (ou o kernel é muito antigo).cpufreq
está faltando em/sys/devices/system/cpu/cpu0/
(e em outras CPUs). É uma placa ARMv8 / Aarch64 Mustang antiga, mas não tenho certeza se isso faz parte do problema. Um HiKey do ARMv8 / Aarch64 executando o 3.18.0-linaro-hikey possui a árvore.Com o Linux, se você possui o
hwinfo
comando, emita (como root):hwinfo --cpu | grep Clock
fonte
dmidecode
é uma pequena ferramenta útil que despeja o que está atualmente naDMI
tabela em um formato que você pode ler. Fazer umdmidecode | grep "Current Speed"
(como root ou com sudo) imprimirá a velocidade da CPU que está sendo relatada atualmente noDMI
.fonte