Verifique informações detalhadas da CPU no Linux com o CoreFreq

Alguma vez sentiu a necessidade de verificar as informações da CPU no Linux ? Você já quis saber a velocidade real do seu CPU? Ou qual processo está atualmente ligado a um determinado núcleo? Essas parecem ser apenas perguntas para especialistas.

Mas fique comigo - como Alice, você pode descobrir mais do que o esperado ao passar pelo espelho. Então, sem mais delongas, deixe-me apresentar nosso principal protagonista: o CoreFreq.

Conheça sua CPU no Linux com o CoreFreq

O CoreFreq é uma ferramenta para coletar dados de desempenho da CPU em sistemas Linux. Tem licença de código aberto. É escrito por CyrIng, um desenvolvedor francês e as fontes estão disponíveis no GitHub.

Embora aparentemente estável, o CoreFreq deve ser considerado experimental. A partir de hoje, só está disponível no repositório Arch. Não é empacotado (ainda) para qualquer outra distribuição. Então, se você quiser experimentá-lo, talvez seja necessário compilá-lo. O que não é difícil, e pode ser um bom primeiro passo se você nunca fez isso antes.

Finalmente, o que torna o CoreFreq diferente de outras ferramentas similares é o objetivo de reunir dados de alta precisão . Para fazer isso, o CoreFreq precisa monitorar a CPU o mais próximo possível do hardware. Vamos ver agora como é possível obter informações da CPU na máquina Linux.

Como o CoreFreq funciona?

O CoreFreq é feito de três partes. Um módulo do kernel, um daemon e uma interface de linha de comando (CLI) do usuário .

  • Por definição, o módulo do kernel terá acesso total ao host. É sua responsabilidade reunir os dados de baixo nível.
  • Os dados são então coletados por um daemon userland. O daemon deve ser executado como root .
  • Por fim, o CoreFreq vem com uma interface de terminal para reportar dados em um formato legível. Essa ferramenta CLI é um processo comum e pode ser usada pelo usuário final.

Compilando e executando o CoreFreq

Antes de executar o CoreFreq, você deve compilá-lo. Isso significa, transformando o código fonte como escrito pelo programador de tal forma que o seu computador o entenderá. Não tenha medo quando digo que você deve compilá-lo - você não terá muito trabalho a fazer. Seu computador fará todo o trabalho pesado.

As etapas necessárias para compilar o CoreFreq serão basicamente as mesmas para todas as distribuições do Linux - exceto para a instalação dos pacotes necessários. Aqui eu dou as instruções para o CentOS / Red Hat e Debian. Sinta-se à vontade para usar a seção de comentários para dar mais detalhes sobre outras distribuições, se necessário.

No entanto, agora é hora de abrir seu emulador de terminal favorito e começar a digitar. Para o Red Hat / CentOS, as ferramentas necessárias fazem parte do grupo “Ferramentas de desenvolvimento” - portanto, basta instalar o seguinte:

# specific to Red Hat, CentOS sudo yum group install "Development Tools" 

Para distribuições baseadas em Debian e Debian, você precisará instalar alguns pacotes individuais:

  # specific to Debian-based distributions sudo apt-get install dkms git libpthread-stubs0-dev 
  • O dkms é uma ferramenta para construir módulos do kernel a partir da fonte. É necessário que o CoreFreq seja implementado como um módulo do kernel para coletar dados o mais próximo possível do hardware;
  • git é uma ferramenta usada para desenvolvimento distribuído. Aqui, usaremos apenas para baixar uma cópia da última árvore de desenvolvimento do CoreFreq. Mas se você quiser, pode corrigir o software e enviar solicitações de pull ao desenvolvedor original;
  • libpthread-stubs0-dev é uma biblioteca obrigatória para construir o CoreFreq (bem, na verdade, no Linux ele contém apenas dados pkg-config, mas vamos fingir por hoje)

Quando as ferramentas necessárias forem instaladas em seu sistema, será hora de fazer o download do código-fonte do CoreFreq:

  # Distribution-agnostic part git clone //github.com/cyring/CoreFreq.git 

Observe que o git baixará a versão mais recente da fonte, bem como todo o histórico de modificações do projeto. Para um mero usuário, isso é inútil. Mas… eu tenho o segredo que espero que esta seja a ocasião para você dar uma olhada mais de perto no processo de desenvolvimento de código aberto. Mas vamos fechar esse parêntese - como você está agora pronto para compilar o software:

  cd CoreFreq/ make && echo Done 

Após alguns segundos, a palavra “Done” deve aparecer na janela do terminal, o que significa que a compilação foi bem sucedida.

Neste ponto, as três partes do CoreFreq são compiladas e estão prontas para começar. Como eu disse antes, o software é feito de três partes - então você tem, de fato, três softwares para começar a rodar o CoreFreq.

Instalando o módulo do kernel

Por razões técnicas - como o CoreFreq usa o mesmo contador de baixo nível - você deve primeiro desabilitar o watchdog do NMI.

No meu sistema Debian, isso pode ser feito editando o arquivo / etc / default / grub para adicionar o argumento da linha de comando do kernel “nmi_watchdog = 0” e executando o update-grub depois:

  sudoedit /etc/default/grub update-grub 

É claro que você precisa reinicializar para que o novo argumento do kernel seja levado em consideração.

Por favor, observe ao escrever este artigo, eu não fiz isso. E eu não tenho nenhum problema perceptível.

Para instalar o módulo do kernel, usaremos a ferramenta Linux padrão insmod. Ele carregará o módulo no kernel e o "iniciará":

  sudo insmod corefreqk.ko 

Você pode verificar se o CoreFreq está instalado usando o lsmod:

  lsmod | grep corefreq corefreqk 45056 0 

E finalmente você pode verificar se o CoreFreq reconheceu seu processador examinando a saída do dmesg:

  sudo dmesg | grep CoreFreq [57413.945720] CoreFreq: Processor [06_1E] Architecture [Nehalem/Lynnfield] CPU [8/8] 

Iniciando o daemon

Agora é hora de iniciar o daemon. Sua finalidade é coletar dados coletados pelo módulo do kernel (já que é um bom design fazer o mínimo possível dentro do kernel):

  sudo ./corefreqd -i 

Este comando não retornará enquanto o daemon estiver em execução. Portanto, não fique surpreso ao ver que o terminal aparentemente "trava" - não é: o daemon está simplesmente em execução, pronto para aceitar solicitações de clientes. Você notou meu uso do sinalizador "-i" acima? Isto é para o daemon exibir mais informações no terminal sobre o que está acontecendo. Apenas uma questão de curiosidade - mas ei, este artigo é sobre curiosidade!

Iniciando o cliente

Agora você está pronto para iniciar o aplicativo cliente. Abra um novo terminal e vá para o diretório CoreFreq. De lá, você executará o cliente:

  cd CoreFreq ./corefreq-cli 

Investigando sua CPU no Linux

Além das características estáticas do seu processador, como o nome do modelo ou seus recursos, assim que o CoreFreq estiver em execução, você pode começar a investigar o comportamento dinâmico da sua CPU em condições reais. Por exemplo, na captura de tela acima, você pode ver os vários núcleos do meu processador rodando entre 138MHz e 334MHz. A carga (muito pequena) sendo distribuída uniformemente entre eles.

Além disso, você pode ver para cada núcleo a quantidade de tempo gasto nos vários estados do processador (o total deve ser 100%) - e o tempo gasto no modo Turbo Boost. Se você não estiver familiarizado com esses conceitos, só posso encorajá-lo a dar uma olhada nessas excelentes explicações de Victor Stinner: //haypo.github.io/intel-cpus.html

Neste ponto, em prol da demonstração, lancei um loop infinito em um terminal na “esperança” de consumir 100% de um núcleo:

  # infinite loop # eats 100% of the CPU--really? while true; do : ; done 

… E, de fato, posso ver claramente em qual núcleo o shell executando o loop infinito está atualmente vinculado. Isso pode ser confirmado observando o monitor da tarefa corefreq-cli

Pressione para revelar o menu e escolha visualizar> monitor de tarefas:

Você não pode ver isso na foto acima, mas se você executar isso sozinho, você notará que a tarefa salta de um núcleo para outro após alguns segundos. Eu acho que sei o motivo desse comportamento. Mas você poderia adivinhar isso? Não hesite em usar a seção de comentários para compartilhar suas ideias!

Mas antes de fazer isso, vamos ver como parar o CoreFreq.

Parando o CoreFreq

Para parar o CoreFreq, você simplesmente precisa sair das três partes do software, na ordem inversa em que você as iniciou.

  • encerre o cliente pressionando F4 ou CRTL-C no terminal do cliente
  • saia do daemon pressionando CTRL-C é o terminal do daemon
  • remover o módulo do kernel sudo rmmod corefreqk

E você está feito.

E agora?

Por alguns aspectos, o CoreFreq traz algumas informações da CPU no Linux que você pode reunir usando top, htop, sensors, lscpu e algumas outras ferramentas. Mas com o CoreFreq, não apenas você tem todas as informações em apenas uma interface, mas, dada a forma como os dados são coletados, você tem uma precisão maior. Finalmente, alguns dados simplesmente não estão disponíveis em nenhuma outra ferramenta - até onde eu sei, é claro (relação C-states? Instruction-per-cycles?)

Você pode encontrar essa ferramenta como voltada apenas para desenvolvedores que tentam ajustar algoritmos intensivos de computação. Ou para os jogadores ansiosos para verificar quanto ganho obtiveram ao fazer overclock de seu hardware.

Mas devo admitir pessoalmente que sempre acho essas ferramentas interessantes, pois elas nos permitem “tocar” a realidade do hardware moderno - geralmente muito mais complexo do que geralmente imaginamos. Por exemplo, quantos de vocês sabiam que os vários núcleos de uma CPU podem funcionar em velocidade diferente - ou podem estar em diferentes modos-C?

De qualquer forma, tenho certeza que alguns de vocês encontrarão usos muito inteligentes dessa ferramenta ou farão descobertas intrigantes sobre seu hardware. Não hesite em compartilhar isso conosco na seção de comentários abaixo. Tenho certeza de que CyrIng ficaria feliz em ouvir suas ideias e feedbacks sobre o CoreFreq para torná-lo ainda melhor.

E, não se esqueça: se você desenvolveu um software de código aberto, não hesite em entrar em contato conosco para obter destaque no seu software de software livre.

Recomendado

Com a FOSS, o Estado indiano de Kerala economiza US $ 58 milhões por ano
2019
9 coisas recomendadas para fazer depois de instalar o Ubuntu 17.10
2019
China lança sistema operacional baseado em Linux, novamente!
2019