Share

Nesse artigo, Escalonamento de frequência da CPU, veremos como é feito o escalonamento de frequência em Linux, os tipos de escalonamentos, o driver de frequência da CPU da Raspberry Pi, BCM2835, e um simples software para ajustar a frequência da CPU. É importante que você saiba o que está fazendo ao alterar a frequência da CPU, sob pena de danificar permanentemente sua placa! Portanto, leia com cuidado e atentamente cada instrução contida nesse artigo! Você poderia tentar um overclock, mas fica a seu próprio risco!

Escalonamento de Frequência da CPU em Linux

arm_a15_hero3-100040232-gallery

Escalonar a freqüência da CPU permite que o sistema operacional possa escalar a frequência da CPU para cima ou para baixo, a fim de economizar energia ou fazer overclocks para tarefas que demandam mais poder de processamento. Frequências de CPU podem ser escaladas automaticamente, dependendo da carga do sistema, em resposta a eventos ACPI, ou manualmente por programas em espaço de usuário.

O escalonamento de frequência da CPU é implementado no kernel do Linux, através da infra-estrutura chamada cpufreq. Desde do kernel 3.4 os módulos necessários são carregados automaticamente e o governor em modo ondemand, o modo recomendado, é ativado por padrão em algumas plataformas. Contudo, as ferramentas do espaço de usuário como cpupower, acpid, ou ferramentas GUI fornecidas para o seu ambiente de trabalho, podem ainda ser utilizadas para configuração avançada. Nós podemos ainda criar scripts ou programas para controlar a frequência da CPU ou alterar a configuração do governor.

O que é um CPUFreq Governor?

A maioria dos drivers de cpufreq (na verdade, todos, exceto um, longrun) ou até mesmo a maioria dos algoritmos de escalonamento de frequência de CPU permitem apenas que o processador ser ajustado para uma frequência. A fim de oferecer escalonamento de frequência dinâmica, o núcleo de cpufreq deve ser capaz de dizer a esses drivers uma “frequência alvo”. Como decidir qual frequência dentro da política de CPUfreq deve ser usado? Isso é feito usando cpufreq governors. Governors (governadores) são esquemas de energia para a CPU. Apenas um pode ser ativado por vez.

Tipos de Governors

Sob o Linux, existem 5 governors para controlar o escalonamento e configuração da frequência da CPU: ondemand, performance, conservative, powersave e userspace.

1. Performance

O governor “performance” configura o CPU estaticamente para a maior frequência dentro dos limites de scaling_min_freq e scaling_max_freq.

2. Powersave

O governor “powersave” configura o CPU estaticamente para a menor frequência dentro dos limites de scaling_min_freq e scaling_max_freq. Este modo não necessariamente economiza energia, mas apenas trabalha numa frequência mais baixa tanto quanto possível.

3. Userspace

O governor “userspace” permite que o usuário, ou qualquer programa de userspace rodando com UID “root”, definir a CPU para uma frequência específica, fazendo um arquivo sysfs “scaling_setspeed” disponível no diretório CPU do dispositivo.

4. Ondemand

O governor “ondemand” configura o CPU, dependendo do uso atual. Para isso, o CPU deve ter a capacidade de mudar a frequência muito rapidamente. Há um certo número de parâmetros acessíveis através de entradas no sysfs: sampling_rate, sampling_rate_min, up_threshold, ignore_nice_load, sampling_down_factor, powersave_bias. Para detalhes sobre esses parâmetros consulte o governors.txt citado nas referências.

5. Conservative

O governor “conservative” muito parecido com o governor “ondemand”, configura o CPU, dependendo do uso atual. Ele difere de comportamento do ondemand, pois gradativamente aumenta e diminui a frequência da CPU em vez de saltar para a frequência máxima no momento em que há alguma carga na CPU. Este comportamento é mais adequado para um sistema alimentado por bateria.

Driver Cpufreq da Raspberry PI

O driver para controlar o CPUfreq governor do CPU da Raspberry PI, o BCM2835, já existe para Linux e já foi incluído no kernel oficial. No entanto, a forma habitual de alterar a frequência da CPU na Raspberry PI é editando ou acrescentando o parâmetro arm_freq no arquivo /boot/config.text. Exemplo: arm_freq=900, altera a frequência máxima para 900MHz. Uma possível configuração para um overclock de um 1GHz poderia ser:

Uma coisa importante a notar é a opção force_turbo que na configuração acima está desativada. Está desabilitado porque, anteriormente, modificar as frequências de CPU do Raspberry Pi ao habilitar o force_turbo precisava setar um bit permanente dentro do chip que iria anular a garantia. No entanto, depois de ter reconhecido o interesse generalizado em fazer overclock na placa Raspberry Pi, a Fundação Raspberry decidi dar-lhe a sua bênção através da construção de um recurso em sua própria versão do kernel Linux chamado Modo Turbo. Isto permite que o sistema operacional automaticamente aumente e diminua a frequência e a tensão da CPU de acordo com quantidade de carga que é colocado sobre o sistema, reduzindo, assim, o impacto sobre o tempo de vida do equipamento para efetivamente zero.

Definindo a opção force_turbo para 1 fará com que a CPU trabalhe em sua frequência máxima o tempo todo. Portanto, tome cuidado e seja cauteloso ao habilitar essa opção!

Setando um Governor na Raspberry Pi

Raspberry_Pi_Photo02

Antes de alterarmos o governor, vamos verificar quais governors estão disponivéis para o processador da Raspberry Pi, para isso digite:

conservative ondemand userspace powersave performance

O resultado acima, mostra que os cincos governors estão disponivéis para o processador BCM2835. A título de comparação digite esse mesmo comando em seu Linux rodando no PC. Para o meu processador, um AMD FX(tm)-8320 Eight-Core, o resultado é como segue:

ondemand performance

Como esse processador tem oito núcleos, existem oitos entradas referentes aos 8 cores no diretório /sys/devices/system/cpu/, mas o resultado é o mesmo para os oitos núcleos. Portanto, há apenas os dois modos mostrados acima para esse processador em particular e configuração de kernel.

Agora vamos verificar qual o governor atual da CPU da Raspberry Pi em uso atualmente e vamos alterá-lo para ondemand.  Digite:

Para alterar o governor é necessário executar o comando como root. Então digite como root:

Alterando a frequência mínima e máxima da CPU

Afim de alterar a frequência mínima e máxima vamos usar um software chamado cpufrequtils. Para baixá-lo digite:

Para setar a frequência mínima use o comando cpufreq-set com o parâmetro -d FREQ e para a máxima, -u FREQ. Vamos setar a frequência mínima para 500MHz e a máxima para 900MHz:

Referências

https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt

http://megakemp.com/2013/02/26/adventures-in-overclocking-a-raspberry-pi/

Translate »