Princípio: eficiência energética
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 se20 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.
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.