Ads 468x60px

terça-feira, 28 de junho de 2011

Consumo de energia no Linux

O lançamento da versão 11.04 "Natty Narwhal" da distribuição Ubuntu Linux foi controversa, entre debates sobre a nova interface gráfica e escolhas de aplicativos, alguns fóruns e sites de testes apontaram que o consumo de energia do novo sistema estava significativamente maior, o que prejudica o tempo de uso de baterias para sistemas móveis, como notebooks e netbooks. Michael Larabel, fundador do phoronix.com, que fornece resultados de testes de desempenho do sistema operacional Linux, foi capaz de determinar a fonte do problema e encontrou uma maneira de corrigí-la.

A regressão no consumo de energia surgiu no tronco principal de desenvolvimento do kernel Linux à partir de sua revisão 2.6.38, portanto um problema presente em distribuições recentes, como o já citado Ubuntu 11.04 e o Fedora 15. Apesar disso, nenhum dos fornecedores das distribuições se prontificou a diagnosticar e reparar o problema.
Usando um pacote de testes desenvolvido por ele e a ferramente git-bisect, Larabel pode determinar a origem da regressão de energia em uma mudança de comportamento do sistema em relação à tecnologia ASPM (Active-State Power Management), um sistema de gerenciamento de energia para PCI Express. Mais especificamente, o commit de código 2f671e2dbff6eb5ef4e2600adbec550c13b8fe72, entitulado "PCI: Disable ASPM if BIOS asks us to."
Em seus comentário do código o desenvolvedor afirma que "atualmente o sistema se recusa a tocar nos registradores ASPM se o BIOS afirma ao sistema que o recurso não está disponível. Isso pode causar problemas se o BIOS possui (por qualquer razão) o ASPM habilitado em alguns dispositivos." Assim, o código foi alterado para que o sistema desconsidere o ASPM caso ele não seja devidamente indicado pelo FADT (Fixed ACPI Description Table), assim os registros do recurso não são usados se a BIOS não fornece seu controle.
O ASPM é um recurso usado para economizar energia de um sistema, sua função é reduzir a quantidade de energia distribuída para links PCI-e não utilizados, isso pode causar uma problema de latência dos dispositivos PCI-e, enquanto seus modos de energia estão sendo alterados, mas resultam em uma economia considerável de energia em dispositivos como notebooks e netbooks. Com essa mudança de código, se a BIOS indicar que não suporta ASPM, o comportamento do sistema é alterado e para de realizar esse gerenciamento de modos.
Contudo, muitos BIOS tem seu suporte ao ASPM mal-configurado e certos problemas de congelamentos de sistema já foram relatados com o uso desse recurso. Não é realmente uma surpresa que esse seja mais um problema relacionado com BIOS sob o sistema Linux, Larabel afirma que os problemas se referem historicamente à modificações e hacks feitos por fornecedores de BIOS para se adequar ao gerenciamento de energia de outros sistemas dominantes do mercado. O problema em questão parece ser que um grande número de BIOS de notebooks e netbooks suportam ASPM, porém não notificam esse suporte através da FADT.
Como problemas com esse recurso não são uma novidade, então Larabel foi capaz de encontrar uma maneira de contornar o problema. As pessoas afetadas por esse problema devem inserir "pcie_aspm=force" na linha de comando do boot. Essa opção forçará o uso do Active-State Power Management, uma opção que já suportada desde a versão 2.6.27 do kernel. A simples adição desse comando pode resultar em uma economia de 15% de energia considerado o consumo regular do sistema sem a correção.
Contudo há uma desvantagem, se o BIOS ou o hardware estiverem em mal estado, o sistema pode travar. Políticas para o ASPM também podem ser configuradas em /sys/module/pcie_aspm/parameters/policy.
O mantenedor do subsistema PCI para o kernel Linux, Jesse Barnes, ainda não comentou sobre o problema. Contudo, uma solução provavelmente só estará disponível a partir da versão 3.1 do kernel.
Para os resultados de testes realizados para determinar a efetividade da correção, acesse o site phoronix.com.
Larabel afirma que ainda existem duas regressões no kernel que afetam o consumo de energia, uma presente desde a versão 2.6.35 e outra relacionada a um agendador de processos. Contudo ele ainda não pode investigar mais a fundo a origem desses dois problemas.
Fonte: phoronix.com, em inglês.

0 comentários: