terça-feira, 29 de maio de 2012

SOs e Frequência da CPU



... quanto vai custar um SO, em termos de processamento?

A relação entre frequência da CPU e consumo de energia é diretamente proporcional. Isto quer dizer que quanto maior a velocidade do processador, maior a frequência de clock e maior o consumo de energia. Em época de gadgets consumo de energia quer dizer menos tempo de bateria e ... sair a caça de tomadas. Em nosso trabalho do dia-a-dia, uma grande parte do tempo perdemos procurando tomada, pontos rede ou de acesso wireless e outros "engates" para nossos celulares, notebooks e tablets. Assim, economia de bateria tem grande importância.

Alguns sistemas operacionais permitem o escalonamento do clock, ou seja, a variação da velocidade da CPU em tempo real. Isto é interessante quando se deseja economizar bateria, principalmente em celulares ou tablets, embora o custo seja de menor velocidade de processamento. Mas também não queremos ficar com um gadget na mão que seja uma lesma! O que é importante é poder calibrar um fator versus outro.

A maioria dos drivers de CPU permitem a variação da frequência do clock (cpufreq_core) para poder oferecer um controle dinâmico da velocidade de processamento e da diminuição do consumo.

Algumas CPUs modernas já fazem o escalonamento, variando entre diversos valores de frequências e de voltagens de operação sem a necessidade de intervenção do kernel do SO. Isto garante a rapidez de troca entre a frequência alta o suficiente para acomodar as necessidades do usuário e baixa o suficiente para economizar energia.

Nestes casos, o SO pode ser configurado para ser mais agressivo em termos de processamento ou mais econômico em consumo mas sempre dentro dos limites estabelecidos [1, 2].

Nos SOs Linux a interface para este controle é definida no kernel como um driver (.../linux-3.x.x/drivers/cpufreq), enquanto que no FreeBSD [3] o controle é estabelecido por um módulo do kernel (/usr/src/sys/modules/cpufreq).

No Linux, o diretório /sys/devices/system/cpu/cpuX/cpufreq/ onde 'cpuX' é cpu0, cpu1 etc., contém todos os arquivos de configuração de cada CPU no sistema em operação e pode ser alterado, seja manualmente ou por algum software, em tempo real.

Claro que pisar no acelerador requer mais combustível e ... é bom não ultrapassar o limite de velocidade. A não ser que tenha como refrigerar o motor com nitrogênio líquido!

Referências:

[1] Pouwelse, J.; Langendoen, K. e Sips, H. "Energy Priority Scheduling for Variable Voltage Processors", http://www.lartmaker.nl/projects/scaling/ (acesso em: 29/05/2012).

[2] mouw, J. A. K.; Langendoen, K. e Pouwelse, J. "LART Lessons Learned: cpufreq", http://www.lartmaker.nl/projects/scaling/ (acesso em: 29/05/2012).

[3] http://doc.fug.com.br/handbook/kernelconfig-config.html

Nenhum comentário:

Postar um comentário