Onde encontrar informações sobre a CPU no smartphone Android

O objetivo deste post é mostrar como obter informações mais detalhadas sobre a CPU do seu smartphone ou tablet Android, explorando os arquivos de sistema do aparelho.
Eles guardam dados sobre o estado e e os recursos do hardware e podem ser encontrados nos diretórios (ou pastas) /var, /sys e /proc.
Para poder obter estas informações à moda hacker e sem instalar programas duvidosos, é necessário ter um gerenciador de arquivos ou um terminal.
Se você ainda não tem um terminal e deseja instalar um no seu sistema, veja como fazer isto aqui (é rápido e fácil).

Dê uma olhada no arquivo cpuinfo

Neste post, vou abordar o caminho via console — mas nada impede que você acesse os mesmos arquivos usando o seu gerenciador de arquivos preferido.
A vantagem de usar o terminal é que ele é um aplicativo leve e, se você estiver lendo este artigo no celular, pode copiar os comandos daqui e colar no seu terminal.
Use o que você achar melhor. 😉
O primeiro lugar a olhar é o ‘/proc/cpuinfo’.
No terminal, digite o comando:

cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 0 (v7l)
BogoMIPS        : 38.40
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 0

processor       : 1
model name      : ARMv7 Processor rev 0 (v7l)
BogoMIPS        : 38.40
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 0

processor       : 2
model name      : ARMv7 Processor rev 0 (v7l)
BogoMIPS        : 38.40
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 0

processor       : 3
model name      : ARMv7 Processor rev 0 (v7l)
BogoMIPS        : 38.40
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 0

Hardware        : Qualcomm Technologies, Inc MSM8916
Revision        : 82b0
Serial          : 3d411c0c00000000
Processor       : ARMv7 Processor rev 0 (v7l)
Device          : osprey
Radio           : 6
MSM Hardware    : MSM8916

Veja, na tabela, abaixo, o significado de cada item:

Item Descrição
processor Neste caso, trata-se de um sistema quad-core (4 núcleos): O primeiro é o 0, o segundo é 1, o terceiro é 2 e o quarto é 3.
Esta é a única informação que varia de um núcleo para outro, uma vez que se trata de “quadrigêmeos” —. Dentro desta CPU, todos os núcleos são iguais.
Model name O nome do modelo indica se tratar de uma microarquitetura de 64 bit ARMv7, que faz parte do chip Qualcomm Snapdragon MSM8916 (também chamado de Qualcomm Krait, citado ao final da lista.
No site da ARM, é possível encontrar pilhas de documentos específicos e detalhados sobre este componente, voltados para desenvolvedores.
BogoMIPS MIPS é uma abreviatura para Milhões de Instruções Por Segundo.
Trata-se de uma unidade de medida para a velocidade de computação de uma processador.
Tal como muitas outras unidades de medidas, nem sempre é usada apropriadamente — por que é muito difícil comparar de forma justa os MIPS entre diferentes computadores.
O BogoMips é uma invenção de Linus Torvalds para usar na versão 0.99.11 do kernel Linux — uma vez que ele precisava medir um laço de tempo.
O prefixo “Bogo”, vem de “bogus”, que significa falso.
O motivo disto é que não há metodologia científica para calcular e comparar os MIPS entre computadores.
Este valor não é para ser levado (muito) a sério.
Features Nesta linha estão listados os recursos disponíveis por esta arquitetura.
CPU Implementer código do fabricante: 0x41 = ARM.
CPU architecture versão da arquitetura da CPU.
CPU Variant Indica a versão atual da revisão do processador.
CPU part Indica o número da parte em questão.
CPU revision O número de ordem da revisão do patch (software de atualização) da CPU.
Hardware O nome do fabricante e modelo do hardware que integra as partes das CPUs.
Revision Revisão atual do chip.
Serial Número de série do chip.
Processor Nome completo do processador, no qual este chip da Qualcomm é baseado.
Device O osprey é o modelo do hardware de rede deste chip da Qualcomm.
Radio A versão do dispositivo de rádio do chip.
MSM Hardware Modelo do Mobile Station Modem ou Modem de eStação Móvel.

Onde encontrar os valores do clock mínimo, máximo e atual das CPUs no smartphone

O sistema operacional armazena os valores da frequência atual, mínima e máxima em um arquivo por processador. Portanto, em um sistema quad core, serão 04 arquivos:
CPU0

  • /sys/bus/cpu/devices/cpu0/cpufreq/scaling_cur_freq
  • /sys/bus/cpu/devices/cpu0/cpufreq/scaling_min_freq
  • /sys/bus/cpu/devices/cpu0/cpufreq/scaling_max_freq

CPU1

  • /sys/bus/cpu/devices/cpu1/cpufreq/scaling_cur_freq
  • /sys/bus/cpu/devices/cpu1/cpufreq/scaling_min_freq
  • /sys/bus/cpu/devices/cpu1/cpufreq/scaling_max_freq

CPU2

  • /sys/bus/cpu/devices/cpu2/cpufreq/scaling_cur_freq
  • /sys/bus/cpu/devices/cpu2/cpufreq/scaling_min_freq
  • /sys/bus/cpu/devices/cpu2/cpufreq/scaling_max_freq

CPU3

  • /sys/bus/cpu/devices/cpu3/cpufreq/scaling_cur_freq
  • /sys/bus/cpu/devices/cpu3/cpufreq/scaling_min_freq
  • /sys/bus/cpu/devices/cpu3/cpufreq/scaling_max_freq

Como você pode ver, estes arquivos e alguns outros se encontram no diretório /sys/bus/cpu/devices/cpuX/cpufreq/.
Para ver os arquivos informativos referentes à cpu0, use o comando ls:

ls /sys/bus/cpu/devices/cpu0/cpufreq/

Para ver o valor da frequência atual do núcelo CPU0, use o comando cat:

cat /sys/bus/cpu/devices/cpu0/cpufreq/scaling_cur_freq

998400

O valores exibidos estão em kilohertz (KHz).
Portanto, o valor acima, reflete uma frequência de 998,4 MHz.
Para obter a escala das frequências possíveis de operação deste núcleo, verifique este arquivo:

cat /sys/bus/cpu/devices/cpu0/cpufreq/scaling_available_frequencies

200000 400000 533333 800000 998400 1094400 1152000 1209600 1363200

Convertidos, estes valores vão de 200 MHz a 1,36 GHz.
Se você gostaria de saber quais são os governors disponíveis, verifique o seguinte arquivo:

cat /sys/bus/cpu/devices/cpu0/cpufreq/scaling_available_governors

interactive ondemand userspace powersave performance

… e o governor atual:

cat /sys/bus/cpu/devices/cpu0/cpufreq/scaling_governor

interactive

Estes são os valores da primeira CPU do meu sistema. Os outros valores provavelmente serão iguais.
Em alguns casos, é possível ao sistema desligar ou reduzir significativamente o clock de algumas CPUs, mantendo as outras ativas, para economizar energia.

Referências:
Entenda mais sobre os governors: https://elias.praciano.com/2013/10/como-alterar-a-velocidade-do-processador-no-android-ajuste-dos-governors/
Entenda mais sobre os processadores ARM: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0337h/Cihhbddh.html

Ajuste a frequência da CPU com cpufreqd

O ajuste da frequência das CPUs pode ser feito com um pequeno aplicativo chamado cpufreqd.
Ele é um daemon e, portanto, roda nos bastidores e, se você deixá-lo quieto, irá fazer os ajustes automaticamente, de acordo com o seu perfil de uso do sistema.
De modo geral, permitir que o sistema faça os ajustes do clock da sua CPU é uma boa idéia.
cpu arm cortex a15 chip
Em alguns casos, contudo, pode ser necessário determinar o melhor ajuste arbitrariamente.
Para isto, podemos usar o cpufreqd.

Instalação do cpufreqd

Se o aplicativo não estiver instalado no seu sistema, use o apt-get (no Debian ou Ubuntu):

sudo apt-get install cpufreqd

No Fedora, use o yum:

yum install cpufreqd

Como executar o cpufreqd

Comece por verificar se os módulos necessários estão instalados:

sudo lsmod | grep cpufreqd

No meu sistema obtive o seguinte resultado:

cpufreq_powersave      12422  0 
acpi_cpufreq           17050  0 
processor              27590  1 acpi_cpufreq

É normal obter uma relação bem mais extensa do que a minha. O que importa é poder criar e usar perfis e regras de performance das CPUs.
O aplicativo cpufreqd, depende de um arquivo de configuração /etc/cpufreqd.conf, onde são fixados todos os seus parâmetros e opções de execução.
O arquivo se organiza em seções chamadas [General], [Profile] e [Rule] — Geral, Perfil e Regra.
Você pode criar perfis novos o quanto quiser. Uma boa idéia é copiar um existente e alterá-lo de acordo com suas necessidades.

Como verificar os governors (perfis) disponíveis

Verifique os governors (perfis) disponíveis no seu sistema:

sudo cpufreqd-get

O resultado deve ser semelhante a este (ele varia em função do modelo de processador que você tem no seu sistema):

Name (#1):	Performance High
Active on CPU#:	0, 1
Governor:	performance
Min freq:	1600000
Max freq:	1600000

Name (#2):	Performance Low
Governor:	performance
Min freq:	1333000
Max freq:	1333000

Name (#3):	Powersave High
Governor:	powersave
Min freq:	1066000
Max freq:	1066000

Name (#4):	Powersave Low
Governor:	powersave
Min freq:	800000
Max freq:	800000

Se você obtiver uma mensagem de erro como esta (abaixo):

No cpufreqd socket found

… veja como resolver:

  • Abra o arquivo de configuração do cpufreqd:
    sudo nano /etc/cpufreqd.conf

    em seguida remova os “#” das seguintes linhas:

    [General]
    pidfile=/var/run/cpufreqd.pid
    poll_interval=2
    verbosity=4
    #enable_remote=1
    #remote_group=root
    [/General]

    Agora grave (Ctrl + o) e feche o arquivo (Ctrl + x).

  • Reinicie o cpufreqd:
    sudo /etc/init.d/cpufreqd stop
    sudo /etc/init.d/cpufreqd start

    Se você obteve a seguinte mensagem, tudo deve estar bem, agora:

    [ ok ] Starting cpufreqd (via systemctl): cpufreqd.service.

Para ver o governor em execução, use o seguinte comando:

sudo cpufreqd-get -l

Novamente, o resultado depende da quantidade de CPUs que você tem no seu sistema:

CPU#0: "Performance High" performance 1600000-1600000

CPU#1: "Performance High" performance 1600000-1600000

Lembre-se: a primeira CPU é a de número 0, a segunda é 1 etc.

Como ajustar o governor do meu sistema

Se você não fizer nada, o sistema se ajustará de acordo com o seu perfil de uso.
Se quiser, contudo, você pode ajustar o sistema arbitrariamente.
Use o comando sudo cpufreqd-get para saber os números dos governors disponíveis: Name(#1), Name(#2) etc.
Para ajustar a CPU para seguir as regras do quarto governor da sua lista (name(#4) Powersave Low, no meu caso), o comando é este:

sudo cpufreqd-set 4

Use o comando cpufreqd-get para ver se houve a mudança.
Para voltar ao modo dinâmico, use o comando:

sudo cpufreqd-set dynamic