Há cerca de três meses, eu estava dividido na escolha de qual seria o meu próximo Mac. A Apple mantinha à venda um modelo do MacBook Pro de 13 polegadas (sem tela Retina) que, ao menos em termos numéricos, aguentaria melhor o tranco em aplicações mais pesadas do que um MacBook Air de mesmo tamanho, vendido a um preço similar. Entre um pouco mais de força e o máximo de mobilidade, fiquei com a segunda opção.
A forma como o pequeno notável se comportou no que precisei fazer nele, entretanto, não foi o que mais me impressionou: o que me deixou abismado mesmo era o quanto ele aguentava ligado, sem precisar ser conectado à tomada.
Pessoalmente, nunca considerei os valores de autonomia de bateria que vemos nas especificações dos produtos como uma forma efetiva de atestar o quanto eles realmente funcionam em uma carga. Não me lembro de um caso em que alguma empresa respeitada maquiou esse tipo de especificação, mas o meu uso comum dita o quanto os meus aparelhos aguentam nas minhas mãos.
Meu primeiro MacBook, o penúltimo modelo de policarbonato na cor branca (meados de 2009), completa cinco anos agora em 2014. Em sua melhor época de vida útil, durava fora da tomada algo em torno de dois dias — sendo usado por, no máximo, duas horas e meia por dia e passando o resto do tempo em espera. Nesta última virada de ano, fiz uma viagem de seis dias com o MacBook Air. Detalhe: sem levar o cabo de força! Naveguei na internet, assisti a vídeos, guardei e editei algumas fotos e até li livros. No mesmo ritmo de uso, ele ainda voltou para casa com um resto de carga!
Essa experiência de uso me fez procurar muito a respeito do que torna esse tipo de cenário possível nos computadores que a Apple faz. De um lado está um histórico de muitos anos de trabalho dela em notebooks e outros gadgets sobre os quais sabemos muito pouco, mas tem grande valia nos modelos atuais. Do outro lado, um trabalho intenso feito em torno do OS X Mavericks que aprimorou o que já era excelente em máquinas como o MacBook Air.
Histórico
É mais fácil pensar que todos os avanços técnicos referentes à autonomia de bateria em computadores são decisivos apenas no lado do hardware. Afinal de contas, parte da experiência de uso que atingimos hoje veio de técnicas de construção de componentes eletrônicos que operam plenamente usando menos energia, incluindo novos processadores — que agora englobam unidades gráficas (GPU — em inglês, graphics processing unit; em português, unidade de processamento gráfico) e outros componentes no mesmo chip —, memórias e baterias.
No entanto, a Apple possui uma longa experiência em gerenciamento de energia em seus computadores portáteis e desktops que dá ao software um papel essencial desde o Mac OS 9. Embora conceitos de gerenciamento de energia e estados de funcionamento de um computador (ligado, desligado, em espera, etc.) sejam simples de serem estabelecidos para um sistema operacional como um todo, o correto planejamento de aplicativos para se comportar mediante todos esses aspectos já é incentivado há muito tempo, visando torná-los dinâmicos em respeito a restrições energéticas.
O efeito disso na durabilidade da bateria de um portátil de qualquer natureza geralmente não é tão grande, mas é algo tão importante que foi um dos fatores decisivos para que os dispositivos móveis mais modernos da Apple ganhassem vida com base no OS X. Embora o iOS tenha menos de sete anos no mercado, iPhones, iPads e iPods touch aproveitam as mesmas técnicas de gerenciamento de energia que foram aperfeiçoadas em Macs por muitos anos.
Por outro lado, construir smartphones e tablets também motivou a Apple a mudar a concepção do Macintosh moderno ao longo dos últimos anos. Considere o MacBook Air, que exemplifiquei acima: internamente, encontramos armazenamento em estado sólido sem partes móveis, uma unidade versátil de processamento desempenhando diversas funções que deixaram de exigir chips específicos na placa lógica — como por exemplo, um dedicado para gráficos — e um espaço interno amplamente dedicado à bateria.
Assim como quase tudo no mundo Apple, autonomia energética também é algo que se conquista através de integração entre hardware e software. Até aqui, dividi algumas realizações da empresa com relação ao assunto nesses dois universos, mas no simples ato de digitar este texto o processador da minha máquina encontra-se em operação reduzida e ela se concentra apenas em atualizar a tela com o que escrevo, buscando poupar uma quantidade mínima de energia da bateria, mas que faz toda a diferença em mantê-la funcionando o máximo possível.
E como se detalhes como esse não fossem bastante, o Mavericks trouxe muito mais benefícios para quem trabalha no limite da mobilidade com portáteis.
Regulando a utilização de energia do processador
Conforme vimos anteriormente, autonomia energética é algo que se conquista através de integração entre hardware e software, o que não pode ser genérico. Cada Mac — especialmente os portáteis — emprega mecanismos para controlar a utilização de energia entre diversos componentes da máquina (armazenamento, periféricos, sensores, etc.), os quais em alguns casos podem até ser controlados pelos usuários nas Preferências do Sistema. Mas no geral, qualquer computador terá seu gargalo em um lugar comum: o processador.
Se observarmos todos os componentes que formam um computador, é possível notar que as escolhas da Apple feitas nos últimos anos para a construção dos Macs atuais também se basearam na necessidade de economizar energia, seja no uso de telas de LED (light emitting diode, ou diodo emissor de luz), SSDs (solid-state drives, ou unidades de estado sólido), baterias desenhadas sob medida e até mesmo o uso de GPUs integradas ao processador com maior desempenho. Todos esses componentes podem ser regulados para operar a um nível de utilização de energia, mas conforme começamos a trabalhar nos aplicativos, geralmente será necessário mais energia para processamento e, como o próprio nome diz, grande parte desta energia será destinada à CPU (central processing unit, ou unidade central de processamento) — ainda mais se ela estiver justamente com seus gráficos integrados em funcionamento.
A diferença de potência elétrica necessária para alimentar seu Mac entre o estado ocioso e o nominal pode ser bem absurda, de acordo com a própria Apple.
Não há muito em Física que possa ser feito para contornar esses efeitos — ao menos não por enquanto. Por conta disso, o melhor a se fazer para economizar a energia consumida pelo sistema operacional é controlar o software de forma a manter o processador com o mínimo de atividade possível, desde os momentos em que a CPU está completamente ociosa.
Mesmo nesses casos, o seu Mac poderá estar processando alguma coisa em segundo plano. A figura abaixo mostra o efeito disso em uma máquina com a versão anterior do OS X instalada:
Na figura vemos nada menos que os timers de software registrados pelo sistema em um intervalo hipotético de 125 milisegundos de atividade. Um timer basicamente é o registro de incremento ou decremento de frequência; aplicado sobre o monitoramento da operação de processador, ele indica os momentos em que ela teve que aumentar sua carga de energia em uso por conta de alguma operação — que pode ser simples como digitar uma tecla ou complexa como compilar um algoritmo. Em qualquer caso isso será registrado pelo sistema, e essas operações sempre o fazem ir do estado de ociosidade para o de carga nominal, consumindo uma quantia considerável de energia.
Quando você deseja diminuir a utilização de energia para o processamento de pequenas operações, uma das estratégias pode ser reordenar as séries de timers buscando executá-los em sequência o máximo possível de vezes, com o mínimo de intervalos. A isso damos o nome de coalescência (ou combinação) de timers — do inglês, timer coalescing.
Coletando a mesma amostra de uma máquina com o OS X Mavericks, a Apple espera um resultado de execução similar ao ilustrado a seguir:
Embora o impacto de se combinar timers de execução de aplicativos só pareça ser importante enquanto o sistema está ocioso, essa técnica na verdade ganha um poder absurdo sob a utilização de energia do seu Mac conforme a sua carga de trabalho aumenta. No Mavericks, o seu Mac sempre tenta programar os aplicativos para fazer mais trabalho em um menor intervalo de tempo no qual possa ter acesso ao máximo de processamento disponível. Dessa forma, o computador pode voltar ao estado de ociosidade rapidamente.
App Nap
Outra forma de se poupar energia em um notebook é minimizar a quantidade de trabalho a ser realizada. Não é algo que um usuário comum vai querer fazer — afinal de contas, ninguém compra nada pensando em limitar a si próprio no quanto vai usar para atender às suas próprias necessidades. Porém no Mavericks isso acaba sendo feito sozinho, sem que você perceba.
Através de um conjunto de políticas de economia de energia aplicadas em todo o sistema operacional, o Mavericks consegue colocar aplicativos que ele reconhece como inativos por parte do usuário em modo especial que irá regulá-los para exigir o menor processamento e atividade de disco possíveis. Isso não quer dizer que esses programas vão parar de funcionar: o que ocorre é apenas uma redução do processamento utilizado — o que, entre outras coisas, pega carona na coalescência de timers, explicada anteriormente.
O efeito causado pelo App Nap pode ser notado sem necessidade de nenhuma configuração e sem nenhum trabalho adicional por parte de quem desenvolve aplicativos. Basicamente, a Apple tenta aplicar critérios globais para colocar aplicativos em atividade reduzida, analisando a visibilidade, interação gráfica, reprodução de conteúdo multimídia e eventos de processamento de cada um deles. Em tempo real eles entram e saem do estado de economia, conforme atendem ou não a qualquer um (ou mais de um) desses critérios.
Em um segundo momento, os desenvolvedores são convidados a tirar proveito de técnicas de programação implementadas pela Apple para “dar dicas” ao Mavericks de situações em que os aplicativos podem entrar ou não no App Nap. Tais técnicas fazem com que os desenvolvedores considerem essas situações sob os mesmos pontos de vista de visibilidade, tolerância à resposta de timers e nível de interação do usuário com os seus programas.
Além das novas tecnologias de desenvolvimento para economia de energia, o Mavericks também traz ferramentas de monitoramento integradas tanto para os usuários quanto para os desenvolvedores. Em primeiro lugar, está um monitor de programas consumindo uma quantidade alta de energia (que pode ser considerado como um “dedo duro” :-P) integrado ao indicador de bateria na barra de menus dos MacBooks.
Em segundo lugar, um novo app Monitor de Atividade (Activity Monitor) com um aba dedicada a coletar informações sobre o consumo de energia de todos aplicativos usados na seção atual do usuário — incluindo a informação sobre eles estarem ou não em App Nap.
Por fim, dentro do Xcode 5, ferramentas de monitoramento de consumo de energia em menor nível, dedicadas a desenvolvedores de aplicativos.
Vale lembrar ainda que alguns aplicativos podem não estar elegíveis à execução especial em segundo plano via App Nap, incluindo todos que não são programados para rodar em primeiro plano — comumente associados à barra de menus, ou deamons de outros programas — e todos compilados para versões anteriores do OS X cuja execução via App Nap tenha sido desativada pelo próprio usuário[1].
Conclusões
Produzir computadores que estejam preparados para durar muito fora da tomada — ou ao menos economizar o máximo de energia — é uma tarefa complexa demais para se basear em uma única estratégia. O que fez o Mavericks chamar a atenção é o quanto esse assunto foi explorado em detalhes para se produzir ganhos significativos na autonomia de máquinas que já eram bastante econômicas rodando o Mountain Lion, ou até mesmo o Lion e o Snow Leopard.
O marketing da Apple alega um ganho extra de uma hora e meia na autonomia de bateria de um MacBook Air atual para se assistir a filmes, mas nossas próprias experiências podem indicar que, em trabalho comum no dia-a-dia, esse ganho pode ser maior ou menor.
Uma das coisas que eu notei, por exemplo, é que alguns aplicativos sem otimizações para o Mavericks (navegadores de terceiros, principalmente) costumam ter maior influência negativa no uso de energia, alterando bastante os resultados de testes de bateria. Apesar disso, recursos para melhorar cenários como esses existem, de forma que a tendência deles é só melhorar com o tempo — seja com mudanças de desenvolvedores ou por hábitos de uso.
- Para prevenir que um aplicativo criado para o OS X 10.8 ou superior rode via App Nap, clique sobre ele com o botão direito no Finder e selecione “Obter Informações” (Get Info). A opção estará na primeira seção da janela, conforme podemos ver nesta imagem. ↩
[via Apple: 1, 2; Ars Technica]