Princípio: eficiência energética

Concluído

O conteúdo deste vídeo ainda é válido, mas os números de princípio podem ser diferentes devido à renumeração de princípio da Green Software Foundation.

Eletricidade e carbono

A maioria das pessoas acha que a eletricidade é limpa. Quando conectamos algo a uma tomada, nossas mãos não ficam sujas e nossos laptops não precisam de tubos de exaustão. No entanto, a verdade é que a maior parte da eletricidade é produzida por meio da queima de combustível fóssil, (geralmente o carvão), e o abastecimento de energia é a causa mais importante das emissões de carbono.

É possível separar a eletricidade e as emissões de carbono, por isso podemos considerar a eletricidade como um dos indicadores de carbono.

Desde os aplicativos em execução no seu smartphone até o treinamento de modelos de machine learning em execução em data centers, todo software consome eletricidade quando está sendo executado. Uma das melhores maneiras de reduzir o consumo de eletricidade e as subsequentes emissões de poluição por carbono de nosso software é tornar nossos aplicativos mais eficientes em termos de energia.

Por esse motivo, o princípio chave da Engenharia de Software Sustentável é criar aplicativos que tenham eficiência energética.

Como engenheiros sustentáveis, precisamos entender a eletricidade. Nosso percurso não começa no computador, ele começa em como a eletricidade que ativa nossos computadores é gerada.

Energia versus potência

A energia mede a quantidade de eletricidade usada. A unidade padrão de energia é joules ou J. No entanto, outra maneira comum de se referir ao consumo de energia é em quilowatt-hora ou kWh.

A eletricidade é geralmente denominada Potência ou Energia, que são dois conceitos diferentes:

Energia = Alimentação ✕ Tempo

  • Energia é a quantidade total de eletricidade usada. A unidade padrão de energia é joules ou J.

  • Potência é a taxa de eletricidade consumida por unidade de tempo e a unidade padrão de potência é watt ou W. Um watt é 1 joule por segundo.

Uma forma comum de se referir ao consumo de energia é Potência sobre uma unidade de Tempo, como watts/segundo ou quilowatts-hora. Por exemplo:

  • 20 watt-segundos ou 20 Ws é a quantidade de energia que você obteria se 20 W fossem executados por um segundo. Como 1 watt é o mesmo que 1 joule por segundo, esse valor é de 20 joules.

  • 20 quilowatts-hora ou 20 kWh é a energia que você obteria se 20.000 watts fossem executados por uma hora.

    Energy = 60 X 60 X 20,000 = 72,000,000 Joules = 72 Megajoules (72 MJ)

Proporcionalidade de energia

A utilização mede a quantidade de recursos usados de um computador e ela normalmente é representada como um percentual. Um computador ocioso tem um percentual de utilização baixo e não está sendo utilizado. Um computador em capacidade máxima de execução tem um percentual alto e está sendo totalmente utilizado.

A proporcionalidade de energia é uma medida da relação entre a energia consumida em um sistema de computador e a taxa em que um trabalho útil é realizado (a utilização dele). Se o consumo de energia geral for proporcional à utilização do computador, ele será proporcional à energia.

Em um sistema proporcional de energia, a eficiência energética é uma constante; independentemente da utilização, a eficiência energética permanece a mesma. No entanto, a eficiência energética do hardware não é constante. Ela varia de acordo com o contexto. Devido às interações complexas de muitos diferentes componentes de um dispositivo de hardware, ela pode ser não linear, o que significa que a relação entre energia e utilização não é proporcional.

Diagrama mostrando a relação entre energia e utilização.

Com 0% de utilização, o computador ainda consome 100 W; às 50% de utilização, ele consome 180 W; e, com 100% de utilização, ele consome 200 W. A relação entre o consumo de energia e a utilização não é linear e não atravessa a origem.

Devido a essa relação, quanto mais você utilizar um computador, mais eficiente ele se tornará em converter a eletricidade em operações de computação úteis. Executar seu trabalho no menor número de servidores possível com a maior taxa de utilização maximiza a eficiência energética deles.

Consumo de energia estática

Há várias razões para essa falta de proporcionalidade de energia. Uma delas é o consumo de energia estática.

Um computador ocioso, mesmo com 0% de utilização, ainda consome eletricidade. Esse consumo de energia estática varia por configuração e componentes de hardware, mas todos os componentes consomem um pouco de energia estática. Esse consumo de energia potencial é um dos motivos pelos quais computadores, laptops e dispositivos móveis têm modos de economia de energia. Quando o dispositivo estiver ocioso, ele vai disparar um modo de hibernação e colocar o disco e a tela em suspensão ou até mesmo mudar a frequência da CPU. Esses modos de economia de energia poupam a eletricidade, mas têm outras compensações, como uma reinicialização mais lenta quando o dispositivo é ativado.

Normalmente, os servidores não são configurados para obter uma economia de energia agressiva ou até mesmo mínima. Muitos casos de uso do servidor exigem capacidade total o mais rápido possível em resposta a demandas que mudam rapidamente. Esse cenário pode deixar muitos servidores em modos ociosos durante períodos de baixa demanda. Um servidor ocioso tem um custo pelo carbono incorporado e pela utilização ineficiente dele.

Velocidade de clock

Velocidade de clock (frequência) é a velocidade operacional de um computador ou do microprocessador dele, expressa em ciclos por segundo (mega-hertz). Os dispositivos de consumo geralmente ajustam dinamicamente a velocidade do relógio dos dispositivos de computação para obter mais proporcionalidade energética.

A velocidade de clock indica a rapidez com que um computador pode executar instruções.

A eficiência energética dos microprocessadores muda com a velocidade de clock. Altas velocidades de clock geralmente têm menos eficiência energética do que baixas velocidades de clock. Por exemplo, no sistema I7-3770K, você pode executar a 3.5 GHz para 50 W ou a cerca de 5 GHz para 175 W. Um aumento aproximado de 40% na velocidade de clock exige um aumento de energia de >3✕.

Reduzir a velocidade de clock em momentos de baixa utilização pode aumentar a eficiência energética e maximizar a eficiência energética do hardware.