Criando um Windows de propósito geral com consumo de energia inteligente

Criando o Windows 8

Nos bastidores com a equipe de engenharia do Windows

Criando um Windows de propósito geral com consumo de energia inteligente

  • Comments 0

Nesta postagem, veremos um tópico extenso sobre o desenvolvimento de um sistema operacional para reduzir o consumo de energia. Observamos uma ênfase crescente no gerenciamento de energia do sistema operacional de duas perspectivas. Primeiro, com o Windows 8 a caminho do mercado, fica fácil ver dois terços de todos os PCs sendo enviados como dispositivos portáteis que funcionam com bateria boa parte ou na maior parte do tempo. E, segundo, no ambiente de trabalho, há um aumento da demanda por computadores desktop com baixo impacto ambiental enquanto buscamos economizar energia de todas as formas possíveis. Em todo caso, isso vai além do desempenho dos estados de suspender/hibernar/reiniciar e atinge o cerne desta postagem que trata da redução do consumo de energia geral do sistema operacional e do suporte para que ele forneça recursos de economia de energia no hardware moderno. Pat Stemen, autor desta postagem, é gerente de programa da nossa equipe de Kernel.
--Steven

A vida útil da bateria e o consumo de energia ainda estão entre os tópicos mais importantes do setor da computação. Queremos dar-lhe uma ideia de como encaramos o gerenciamento de energia no Windows 8 e como medimos o consumo de energia diariamente. Consideramos o gerenciamento de energia um recurso essencial do sistema operacional que é crítico para qualquer arquitetura de chip e qualquer formato de PC.

Nossas metas

No gerenciamento de energia do Windows 8, estabelecemos três metas:

  • Dar destaque para o hardware. Desenvolvemos o Windows 8 de forma que o consumo eficiente de energia da plataforma de hardware ganhe destaque, quer o sistema seja um tablet Windows baseado em SoC ou um PC de jogos equipado com SLI. Criamos as interfaces de gerenciamento de energia de forma padronizada e consistente em todas as plataformas. Isso permite que nossos parceiros de hardware e desenvolvedores de aplicativos se concentrem nas inovações e experiências exclusivas, em vez das diferenças no hardware da plataforma e no gerenciamento de energia.
  • Continuar a fornecer uma ótima vida útil da bateria. O Windows 7 forneceu uma redução no consumo de energia e um aumento da eficiência de energia significativos, especialmente na vida útil da bateria de PCs móveis. Na verdade, você pode ler o que pensamos a respeito nesta postagem do blog do e7.) No Windows 8, queremos manter o mesmo nível de eficiência dos PCs existentes, embora o resto do Windows seja repensado.
  • Habilitar o modelo de energia do smartphone. Uma das características mais interessantes das plataformas SoC (System-on-Chip) das quais falamos no CES e em //BUILD/ é sua capacidade de entrar rapidamente no estado ocioso com baixo consumo de energia. Queremos usar a energia ociosa ultrabaixa para fornecer a conectividade constante e os recursos instantâneos do modelo de energia do smartphone para os competentes PCs com Windows 8.

Por que é importante

A maioria das pessoas provavelmente conhece o impacto de um bom gerenciamento de energia: a longa vida útil da bateria nos dispositivos móveis. Os dispositivos de computação móvel são alvo de uma forte investigação sobre o tempo de execução da bateria por um bom motivo: nunca usamos tanto sua bateria. O fornecimento consistente de uma longa vida útil da bateria exige uma boa coordenação entre o hardware subjacente, o sistema operacional e o software de aplicativo. A capacidade da bateria e sua qualidade ao longo do tempo também possuem uma grande influência sobre o tempo de execução.

Além da vida útil da bateria móvel, os outros impactos menos tangíveis do bom gerenciamento de energia do PC são as reduções nos custos de energia e no impacto ambiental. Os benefícios de PCs desktop e servidores empresariais com gerenciamento de energia no datacenter, normalmente, são a redução do gasto financeiro necessário para alimentar e resfriar esses sistemas, bem como a consequente redução da emissão de gases de efeito estufa necessária para produzir a energia para eles. Não dá para subestimar o impacto nesse caso; pequenas mudanças bem feitas no Windows podem causar um grande impacto ambiental por causa da escala. Em muitos mercados no mundo, o crescente consumo de eletricidade está aumentando a demanda em todos os aspectos do local de trabalho para reduzir o consumo de energia. Os PCs são uma fonte significativa de economia em potencial.

O gerenciamento de energia também age em perfeita sintonia com o desempenho e a capacidade de resposta do sistema. Por exemplo, podemos reduzir facilmente o desempenho do processador para economizar energia, mas, nesse caso, aumentamos o tempo necessário para processar uma determinada carga de trabalho. Poder equilibrar bem energia e desempenho é um requisito importante em toda a experiência do usuário do Windows.

Também estamos observando vários blogs técnicos que examinam os processadores e as plataformas de hardware mais recentes, não apenas quanto ao desempenho de parâmetros de comparação e GHz, mas também de energia consumida para executar a carga de trabalho. Essas aferições combinam energia e desempenho em eficiência de energia: a quantidade de energia gasta para executar parte da carga de trabalho fixa. "Desempenho por watt"é a mesma coisa.

Entretanto, o que mais nos anima é que o gerenciamento de energia é fundamental em todos os aspectos de design da plataforma de PC. O gerenciamento de energia afeta diretamente atributos como densidade, peso, acústica (ventilador e sua velocidade), temperatura do revestimento, custo, tamanho da tela, resolução, quantidade de RAM etc. O hardware fino, leve, sempre conectado e que é executado o dia inteiro na bateria é o melhor. Adoramos poder colaborar para que isso aconteça no ecossistema do Windows.

Energia como um recurso

Consideramos a energia um recurso crítico do sistema, assim como a utilização da CPU, a atividade do disco rígido ou o consumo de memória. Por ser um recurso essencial, controlamos o quanto o Windows o consome por dia em cada compilação diária do Windows 8. Assim, podemos detectar rapidamente as alterações no consumo de energia e trabalhar ao lado da equipe de desenvolvimento para encontrar a causa do problema, desenvolver e testar qualquer alteração necessária. Com a redução do consumo de energia, obtemos uma nova linha de base de referência para as futuras compilações diárias.

O consumo de energia bruta (por exemplo, em miliwatts) de qualquer PC com Windows é o resultado de diversos fatores de plataforma, inclusive a CPU e o chipset, o tipo e a quantidade de RAM, a velocidade, o tipo e a capacidade da unidade de armazenamento, o tamanho da tela etc.

Para ter uma linha de base consistente, identificamos um conjunto de plataformas de referência e medimos a energia em todo o processo de desenvolvimento do Windows 8. Nossas plataformas de referência representam o tipo de máquina comumente usado por nossos clientes. Elas incluem plataformas de cada um de nossos parceiros de chip de silício. Usamos o consumo de energia no Windows 7 e Windows 7 SP1 como linha de base e o comparamos com as aferições feitas no Windows 8 em todo o processo de desenvolvimento.

O gráfico mostra a energia ociosa para várias compilações (da 8074 à 8144) do Windows 8, entre 9.000 e 10.000 mW, mas na compilação 8114, ela atingiu o pico de 10.500 mW.
Energia ociosa do sistema total medida em nosso laboratório para uma plataforma de referência.
É possível ver uma alteração que causou um aumento de ~1,25 W, que foi corrigido em uma compilação subsequente.
Observe que é esperada certa variação entre as execuções e compilações.

Medimos o consumo de energia de várias cargas de trabalho de software em cada sistema de referência. As cargas de trabalho que medimos são semelhantes aos parâmetros de comparação de baterias de terceiros já que foram criadas para representar os principais cenários que todos enfrentam em suas máquinas diariamente. Nossas principais cargas de trabalho incluem Ocioso, Navegação na Web, Reprodução de Vídeo, Reprodução de Áudio e Em Espera.

Você deve estar pensando que o tempo com a carga de trabalho ociosa não é útil, afinal, poucas pessoas reiniciam a máquina, deixam-na na tela Iniciar e não fazem mais nada. Embora seja verdade, consideramos a carga de trabalho ociosa a base do consumo de energia para o sistema: é a quantidade mínima de atividade quando o sistema está ativo. A redução do consumo de energia no estado ocioso reduz o consumo de energia básico da maioria das outras cargas de trabalho, inclusive reprodução de vídeo e de áudio. Além disso, várias cargas de trabalho apresentam um tempo ocioso significativo, desde os breves períodos entre pressionamentos de tecla durante a digitação aos minutos entre as transições de slides em uma apresentação.

O meio mais comum de medir a energia de um PC com Windows móvel é um teste de degradação de vida útil da bateria, no qual a bateria é carregada a 100% e depois descarregada a 0%, repetindo a carga de trabalho. Esse método funciona, mas é propenso a erros já que a capacidade da bateria se degrada naturalmente com vários ciclos de carregamento/descarregamento. Cada teste de degradação é um ciclo extra de carregamento/descarregamento, e é feito todos os dias. Por isso, nossas aferições podem variar ao longo do tempo conforme a deterioração da bateria.

Temos uma configuração de aferição de energia no laboratório de desempenho que nos permite fornecer plataformas de referência com corrente contínua direta e medir o consumo. Mencionamos o laboratório e a capacidade geral na postagem do nosso blog do IE sobre consumo de energia do navegador, mas não dissemos que temos vários laptops reais de referência configurados para medir o consumo de energia todos os dias. A fonte de alimentação e sua capacidade de aferimento são automatizadas com software de teste para podermos, continuamente, instalar o Windows, medir a energia em todos os cenários e analisar os resultados em cada nova compilação do Windows 8.

Uma prateleira repleta de equipamentos que monitoram o consumo de energia CC
Fontes de alimentação CC com capacidade de aferição interna

Um laptop executando o Windows 8 conectado a uma caixa que mede o consumo de energia
Plataforma de referência equipada com fonte de energia CC e aferição

Como o software influencia o consumo de energia

O software pode influenciar o consumo de energia consumindo recursos (CPU, disco, memória etc.), já que cada um deles está associado a um gasto de energia. O software também influencia o consumo de energia em todo o sistema operacional e software de driver responsável por gerenciar estados de energia de hardware.

O Windows 8 apresenta três principais inovações para melhorar a forma como o software influencia o consumo de energia: o modelo de aplicativo com estilo Metro, limpeza ociosa e uma nova estrutura de gerenciamento de energia de dispositivos de tempo de execução. Nesta postagem de blog, forneceremos uma breve visão geral de como essas inovações melhoram o consumo de energia.

Modelo de aplicativo com estilo Metro

A maioria das pessoas conhece, diretamente, a influência do software sobre o consumo de energia. Pode ter sido com um aplicativo no celular que gasta a bateria rapidamente ou com o acionamento do ventilador no laptop durante um jogo ou o processamento de uma planilha. São exemplos de aplicativos que consomem diretamente CPU, GPU, tempo de rede, disco e/ou memória.

Uma das inovações do gerenciamento de energia no Windows 8 não é um recurso dessa infraestrutura, mas o próprio modelo de aplicativo com estilo Metro. O modelo de aplicativo com estilo Metro foi criado desde o início para ser favorável à energia. O benefício do gerenciamento de energia é que o modelo permite aos desenvolvedores garantir a execução do aplicativo apenas no momento certo; os aplicativos em segundo plano são suspensos para não consumir recursos e energia quando não estão em uso.

Sem dúvida, reconhecemos que a atividade em segundo plano é um componente essencial de aplicativos que estão sempre conectados e prontos para responder. O modelo de aplicativo com estilo Metro e a WinRT subjacente oferecem suporte à atividade de segundo plano através de um novo conjunto de recursos que chamamos de tarefas em segundo plano. Consulte Introdução às tarefas em segundo plano para obter mais detalhes. As tarefas em segundo plano permitem realizar facilmente a atividade em segundo plano de forma favorável à energia. Elas também permitem aos desenvolvedores continuar a fornecer capacidade de resposta e de "renovação" nos aplicativos, mas os mecanismos são diferentes do modelo Win32 existente em virtude da busca de uma interface rápida e fluida e de outros atributos importantes dos aplicativos com o estilo Metro (consulte Oito características de ótimos aplicativos com estilo Metro).

Projetamos as tarefas em segundo plano e o modelo de aplicativo com estilo Metro geral para permitir um novo nível de capacidade de resposta do aplicativo considerando, ao mesmo tempo, os atributos do sistema como um todo, inclusive consumo de energia e de memória.

 A guia Processos (exibição mais detalhada) mostra vários aplicativos com estilo Metro no modo suspenso, todos com 0% de CPU, e usando entre 17 e 85,1 MB de memória.
Gerenciador de Tarefas mostrando aplicativos com estilo Metro suspensos

Limpeza ociosa

O software pode causar um grande impacto sobre o consumo de energia mesmo que não use muitos recursos durante a atividade ociosa intermitente. Chamamos as melhorias na atividade ociosa de limpeza ociosa.

A maioria das plataformas de PC apresentam estados ociosos do processador e chipset que permitem à plataforma de hardware parar o relógio ou desligar completamente partes do silício que não são usadas. Esses estados ociosos são essenciais para permitir uma longa vida útil da bateria, mas exigem um tempo de permanência mínimo, ou seja, a máquina deve permanecer ociosa por tempo suficiente para que a entrada e saída desse estado valha a pena em termos de consumo de energia. Isso porque a entrada e saída do estado ocioso consome certa energia. O software aproveita com maior eficiência o estado ocioso quando sai dele o mínimo possível e permanece nele o máximo possível.

Controlamos a eficiência ociosa do Windows 8 usando o Rastreamento ETW interno, algumas adições ao Analisador de Desempenho do Windows e um histograma básico. A seguir, você verá a diferença entre a duração ociosa do Windows 7 e do Windows 8. Quando a tela é ligada, já movemos a barra significativamente de uma duração ociosa máxima de 15,6 ms no Windows 7 para 35% das durações superiores a 100 ms no Windows 8! Com a tela desligada e durante o modo Em espera conectado, nossas durações ociosas são ainda mais longas, atualmente de dezenas de segundos.

Gráfico comparando a duração do período ocioso do Win7 e do Win8 com a tela ligada. No Win7, cerca de 95% são de 10 ms a 16 ms. No Windows 8, é cerca de 35%.

Gerenciamento de energia de dispositivos de tempo de execução

Os PCs atingem a vida útil da bateria mais longa quando todos os dispositivos, inclusive processador, armazenamento e periféricos, entram no modo de baixo consumo de energia. Quase todo dispositivo no PC moderno possui algum tipo de tecnologia de gerenciamento de energia, e o gerenciamento de energia de dispositivos de tempo de execução determina como essas tecnologias são usadas continuamente sem afetar a experiência do usuário. Um bom exemplo de gerenciamento de energia de dispositivos de tempo de execução é escurecer a tela automaticamente depois de um tempo limite no Windows 7.

Apenas para ressaltar a importância do gerenciamento de energia de dispositivos, verificamos em vários sistemas que, se nenhum recurso de gerenciamento de energia for habilitado, a vida útil total da bateria poderá facilmente ser reduzida em até 25%! Vale notar que desabilitar um dispositivo no Gerenciador de Dispositivos também não ajuda muito; a maioria dos dispositivos é inicializada por firmware no modo de energia mais alta e requer um driver de dispositivo para obter um consumo de energia mais nominal. É possível diagnosticar alguns problemas de gerenciamento de energia de dispositivos usando o utilitário powercfg.exe interno do Windows 7 com o parâmetro /ENERGY. A saída de /ENERGY é um arquivo HTML que fornece uma exibição dos dispositivos e software possivelmente sendo executados em um estado de baixo consumo de energia. Obviamente, o uso da imagem de fábrica do seu PC que vem carregado de drivers de OEM e fornecedor é quase sempre a melhor maneira de garantir que os dispositivos do PC tenham um bom desempenho em gerenciamento de energia.

O gerenciamento de energia de dispositivos eficiente é realizado pelo driver para o dispositivo junto com o gerenciador de energia do kernel do Windows e o firmware da plataforma. O gerenciador de energia permite que os drivers desses dispositivos implementem facilmente as rotinas de gerenciamento de energia e coordenem as transições de estado de energia com outros dispositivos da plataforma.

Para o Windows 8, criamos uma nova estrutura de energia de dispositivo que permite que todos os dispositivos informem seus recursos de gerenciamento de energia e os integrem em um driver especial chamado Power Engine Plug-inou PEP, criado para sistemas SoC. O PEP é fornecido pelo fabricante de silício e conhece todos os requisitos de gerenciamento de energia específicos do SoC. Com isso, os drivers de dispositivo, como o nosso controlador host USB ou um driver de teclado, podem ser criados uma única vez e ainda assim fornecer o gerenciamento de energia ideal em todas as plataformas, de PCs baseados em SoC a servidores de datacenter.

Estamos trabalhando ativamente com todos os parceiros de ecossistema para fornecer as tecnologias de baixo consumo de energia e a longa vida útil de bateria que todos desejam nos PCs com o Windows 8.

--Pat Stemen