¿Cómo hacer que un centro de datos sea más eficiente? Cuando le preguntamos a Paul Calleja, director de servicios informáticos de investigación de la Universidad de Cambridge, obtuvimos una respuesta sorprendente:

“Todo se trata del software”, dijo. “Las ganancias que obtenemos del hardware, en términos de producción por megavatio, se verán eclipsadas por las ganancias que obtenemos del software”.

Eso podría sorprender a los diseñadores de centros de datos. Cuando consideran la huella ambiental de una instalación, comienzan con la energía utilizada en el sitio.

Se centran en el calor residual producido y los sistemas de refrigeración que lo eliminan. En los propios equipos informáticos buscan servidores que realicen más cálculos por Watt, o almacenamiento que tenga un menor consumo de energía en reposo.

A veces (pero muy raramente) observan la energía incorporada en el centro de datos: las emisiones creadas por el concreto del que está construido y las materias primas en los componentes eléctricos.

Pero lo que casi siempre se ignora es el factor que causó la creación del edificio en primer lugar y que impulsa cada acción individual realizada por el hardware.

Todas las emisiones del centro de datos son causadas por el software. Sin software, no habría centros de datos. Si queremos centros de datos más eficientes, ¿por qué empezamos por el hardware cuando, como dice Calleja, todo es software?

¿Por qué no tenemos software verde?

“Volviendo a los fundamentos, el software no emite carbono por sí mismo”, dice el empresario y académico David Mytton.

“No es como si estuviera quemando o generando algo físico. La pregunta es, ¿Cuál es el impacto de la infraestructura en la que se ejecuta el software? Y el primer paso es tratar de mejorar el comportamiento de la infraestructura en términos de electricidad y la energía que entra en el centro de datos”.

Los reguladores y los líderes ecológicos corporativos pueden especificar la cantidad de energía que puede usar un edificio y el tipo de materiales de los que está hecho, y los constructores de centros de datos pueden demostrar que están trabajando para lograr las mejores prácticas en estas áreas.

Pero más allá de eso, se trata del software y, como dice Mytton, "se ha prestado menos atención a las características y el comportamiento del software en sí".

“Los ingenieros operativos y los ingenieros de hardware realmente han estado haciendo todo el trabajo pesado hasta ahora”, dice Anne Currie, empresaria y desarrolladora que, junto con Sarah Hsu y Sara Bergmann, está escribiendo un libro, Building Green Software, para la editorial O'Reilly. "Todos los ingenieros de software han dicho 'Lalala, ese es su problema'".

La eficiencia no es un problema de hardware, dice: “Los pasos que nos quedan por dar en los centros de datos están relacionados con el software. Y muchos de los pasos que tenemos que tomar en los hogares de las personas también están relacionados con el software”.

Para ser justos, el sector ya ha reducido efectivamente las emisiones de los centros de datos. En los primeros años de este siglo, los investigadores notaron que el uso de energía de los centros de datos en los EE.UU. estaba creciendo rápidamente. En 2011, se predijo que seguiría creciendo fuera de control, pero de hecho, se mantuvo en torno a los niveles de 2010.

Esto se debió a que el software se volvió más eficiente. La virtualización hizo posible consolidar aplicaciones dentro de un centro de datos y los servicios en la nube ofrecieron estos beneficios automáticamente. Los servidores virtuales, en centros de datos en la nube centralizados, comenzaron a reemplazar a los servidores independientes.

El software de virtualización literalmente redujo la necesidad de construir nuevos centros de datos al utilizar mejor el hardware.

"La ventaja de la nube sobre los centros de datos tradicionales es el uso de software para obtener una densidad de servidor mucho mayor dentro de los centros de datos", dice Currie.

Usa menos ciclos

Esa es la infraestructura. Pero cuando crea nuevas aplicaciones, ¿Cómo las hace más eficientes?

El software verde debe diseñarse para ser eficiente en carbono. Como lo expresaron Currie, Hsu y Bergman: “El software verde está diseñado para requerir menos energía y hardware por unidad de trabajo”.

Los programadores creen que hay una respuesta simple a esto, pero Currie dice que casi siempre es incorrecta.

green software o reilly.jpeg
– O Reilly

"Mis coautores y yo hablamos en conferencias, y cada vez que hablamos, alguien se levanta al final y dice: '¿Debería volver a escribir mis aplicaciones en C?'”

Todo el mundo sabe que C es eficiente porque maneja el hardware del servidor de manera más directa que un lenguaje de nivel superior como Java o Python. Sin embargo, los programadores esperan que Currie y sus coautores les digan que vayan a usarlo. Pero no es tan simple.

“Es difícil decir que no, esa no es la respuesta, porque si reescribe sus aplicaciones en C, es posible que obtenga una mejora de 100 veces en la eficiencia”, dice. “Pero matará su negocio”.

“En los viejos tiempos, solía escribir grandes servidores y sistemas de red en C, donde el rendimiento era realmente crítico. Esto fue en los '90. Todas las máquinas eran absolutamente terribles. Internet era terrible. Todo era 1.000 veces peor de lo que es hoy. Tenías que trabajar de esa manera, o no funcionaría en absoluto”, explica.

Ha habido mejoras desde entonces, pero “ese aumento de 1000 veces en la calidad de las máquinas no se ha utilizado para lograr la productividad de las máquinas. Lo hemos usado para brindar productividad a los desarrolladores”.

Los lenguajes de alto nivel facilitan la construcción de programas, pero hay capas de interpretación entre el programa y el hardware. Entonces, el software menos eficiente ha absorbido la potencia adicional del hardware.

Es ineficiente, pero ha sido necesario, dice Currie. Escribir en lenguajes de alto nivel es más fácil y eso es lo que ha permitido la velocidad y el volumen del desarrollo de software actual. No podríamos volver a los lenguajes de nivel inferior, incluso si lo intentáramos.

“Simplemente no tenemos la cantidad de ingenieros necesaria”, dice. “Si estuviéramos escribiendo todo en C, no tocaría los lados. Lleva mucho tiempo escribir todo en C o Rust. Es lento. La mayoría de los negocios morirían si lo hicieran de esta manera, y no quiero que los negocios de todos mueran”.

Codifique mejor donde cuenta

Mejorar el código no es sencillo, dice Mytton: “Siempre es más complicado. Dejaremos las respuestas simples a los políticos, las respuestas reales realmente se reducen a lo que está tratando de mejorar”.

La física nos dice que la energía es potencia multiplicada por el tiempo, por lo que si desea reducir el carbono causado por su uso de energía, puede reducir la potencia utilizada o mejorar las características de la energía pasando a energía limpia.

“Eso reduce una parte de su ecuación”, dice Mytton. “Pero la variable tiempo es a menudo lo que pensarán los ingenieros de software y los programadores. Si reduzco el tiempo, al hacer que mi código sea más rápido, se reducirá la cantidad de energía consumida”.

Por supuesto, esto supone que no hay otras variables, pero generalmente hay más variables, dice: “Para dar dos ejemplos, la memoria y la CPU son dos recursos separados. Optimizar esos dos puede ser difícil, ya que obtienes diferentes compensaciones entre ellos.

“Un segundo ejemplo es donde podría reducir el tiempo al ejecutar el código en 10.000 servidores diferentes, pero es posible que haya aumentado la potencia utilizada. Necesitas averiguar para qué estás tratando de optimizar”.

Para la mayoría de nosotros, Currie dice que se trata de optimizar el software “donde importa. Lo que importa son las cosas que van a ser utilizadas por montones y montones de personas, porque se necesitan años para hacer estas cosas”.

Como dice el libro: “No pierda su tiempo optimizando software que casi nadie está ejecutando. Antes de comenzar, considere la cantidad de hardware (servidores o dispositivos) y energía (datos y CPU) en conjunto que una aplicación puede causar que se use en todos los lugares donde se ejecuta. Por ahora, apunte solo a lo que está funcionando a escala”.

"La mejor aplicación de su esfuerzo siempre es específica del contexto, y cuando se trata de volverse ecológico, el dolor no es igual a la ganancia".

Las cosas que deben optimizarse son generalmente las herramientas compartidas que subyacen en todo lo que hacemos. Por lo tanto, la mayoría de los departamentos de TI deberían operar como consumidores informados, exigiendo que estas herramientas sean eficientes.

“Para la mayoría de las personas en una empresa, no se trata de su código, se trata de su plataforma”, dice Currie. “Se trata de administrar su cadena de suministro. Se trata de presionar a los proveedores. Todas las plataformas en las que se ejecuta deben ser ecológicas.

“Mire por ejemplo las bibliotecas estándar que vienen con los lenguajes más comunes y populares. ¿Están optimizadas esas bibliotecas estándar? Esas bibliotecas estándar se usan todo el tiempo, por lo que vale la pena que las personas que escriben esos lenguajes ajusten esas bibliotecas, en lugar de simplemente ajustar el código que se ejecuta sobre esas bibliotecas".

La presión de los clientes hará que las plataformas sean “activamente geniales”, dice. "Si la plataforma está reescrita en Rust, se mide y se comprueba a sí misma, y ​​se ha vuelto lo más eficiente posible, eso es mucho, mucho más efectivo que hacerlo solo para tus propias cosas".

Mytton dice que: “Creo que el objetivo de la computación sustentable es lograr que los consumidores no tengan que pensar en esto en absoluto. Simplemente pueden continuar usando todos los servicios que les gustan, y automáticamente son sostenibles y tienen un impacto mínimo o nulo en el medio ambiente”.

Y eso ya está pasando. “Si está utilizando AWS hoy, se está beneficiando de todas sus compras de energía renovable y de las mejoras en la eficiencia de su centro de datos, y no ha tenido que hacer nada como cliente. Y creo que ese debe ser el objetivo.

“Los desarrolladores de software deberían esperar algo similar”, continúa. “Puede que tengan que tomar algunas decisiones más y construir algunas cosas más en su código. Pero es de esperar que la infraestructura subyacente haga mucho del trabajo por ellos y solo tengan que tomar algunas decisiones.

El inicio del movimiento

El movimiento de software verde comenzó como un esfuerzo informal, pero en los últimos años ha aumentado su perfil. Sami Hussain, un defensor de la nube en Microsoft, formó un grupo de enfoque que en 2021 se lanzó como Green Software Foundation, en la conferencia Build de Microsoft.

“Como ingenieros de software sustentables, creemos que todos tienen un papel que desempeñar en la solución climática”, dice Hussain. “La ingeniería de software sostenible es inclusiva. Cualquiera que sea el sector, la industria, el rol, la tecnología, siempre hay algo que puedes hacer para tener un impacto”.

green software.png
– Green Software Foundation

Hussain es ahora director de software ecológico de Intel y presidente a tiempo parcial de la Fundación, que opera bajo la Fundación Linux. Cuenta con el respaldo de organizaciones como Accenture, Avanade, GitHub, UBS, Intel y Microsoft, e incluso aparentemente obtuvo la bendición del ex director ejecutivo de Microsoft, Bill Gates.

“La idea era responder a la pregunta: ¿Es un problema de software o es un problema de hardware? Y la respuesta es: ambas”, dice Currie. “Pero mientras los centros de datos lo estaban abordando, la industria del software realmente no lo estaba, porque no era algo que les estaba ocurriendo”.

La Fundación quiere ser una organización de base, en lugar de tratar de obtener regulaciones de arriba hacia abajo: “Hablamos sobre si deberíamos presionar a los gobiernos para que establezcan reglas, pero en realidad no es nuestro conjunto de habilidades. Por el momento, estamos completamente enfocados en presionar a las personas para que sean conscientes y midan, en lugar de involucrar a los legisladores”.

La Fundación ha elaborado un informe sobre el estado del software verde y los tres autores de O'Reilly son todos miembros.

Tomando medidas

"Gran parte del enfoque de Green Software Foundation se ha centrado en las mediciones", dice Currie, "porque si puede medir, puede ejercer presión sobre sus proveedores y sus proveedores".

La idea es crear una medida que se llamará Software Carbon Intensity (SCI), que mide cuánta energía se usa (o cuántos GEI se producen) para una determinada cantidad de trabajo.

Pero es difícil. “Los vatios por byte son un criterio de medición clave en la industria de las redes, pero no lo son en la industria del software”, dice Currie. "Porque en las redes, los vatios por byte son bastante claros, pero ¿Cuál es la unidad de trabajo cuando se trata de software?"

La base del SCI es una "ecuación relativamente simple, que analiza cosas como la energía consumida por el software, las emisiones incorporadas de ese software y dónde se ejecuta ese software", dice Mytton.

La unidad de trabajo es un poco menos clara: "La unidad funcional puede ser algo así como una llamada de usuario o una llamada API, o ejecutar un trabajo de aprendizaje automático".

La combinación de estos componentes da una puntuación, para ayudar a comprender la intensidad de carbono general del software, dice Mytton, que no está directamente involucrado en el trabajo de SCI: “Creo que el objetivo de eso es poder observar mejoras a lo largo del tiempo. Para que pueda ver cómo los cambios en la arquitectura de su software o los componentes reducen o aumentan potencialmente su puntuación. Y el objetivo a largo plazo es poder comparar diferentes piezas de software, para que pueda tomar decisiones en función de la intensidad de carbono”.

El objetivo de comparar el software con SCI aún está lejos, ya que los diferentes proveedores definen los límites de sus sistemas de manera diferente, y la medida SCI aún está emergiendo.

La Fundación explica que "no es una huella de carbono total; es una tasa de emisiones de carbono para el software, por minuto o por dispositivo de usuario, que puede servir como un punto de referencia importante para comparar la intensidad de carbono de un sistema de software a medida que se actualiza con el tiempo, o entre tipos similares de sistemas de software, como aplicaciones de mensajería o soluciones de videoconferencia".

Es importante destacar que, para que SCI funcione, el software debe saber dónde se está ejecutando, qué electricidad está provocando que se consuma y la intensidad de carbono local de esa electricidad.

La buena noticia es que los procesadores modernos de proveedores como Intel y AMD ahora incluyen de forma rutinaria herramientas para informar sobre su consumo de energía, pero aún están evolucionando.

Mytton opina que: “La herramienta de Intel solo funciona en las CPU de Intel, y es diferente si desea obtener datos de AMD. Y que yo sepa, los chips Arm no tienen nada disponible. Dado que más sistemas se están moviendo a Arm [por razones de eficiencia energética] en dispositivos móviles, algunas computadoras portátiles y también en el centro de datos, eso es un problema”.

Estas medidas van a ser importantes, porque las organizaciones pueden necesitar equilibrar las mejoras de eficiencia con el rendimiento. Sin embargo, Greg Rivera, vicepresidente de productos de la firma de inteligencia de software Cast, dice que no habrá muchos casos de este tipo.

“La investigación de Green Software Foundation está descubriendo que hacer que su software sea más ecológico, por lo general, hace que funcione mejor, cuesta menos y lo hace más resistente”, dice.

Sin embargo, los codificadores que hacen que los sistemas funcionen bien a veces pueden encontrar métodos que intercambien rendimiento y eficiencia, y eso podría tener un efecto en los esfuerzos para brindar a los usuarios la mejor experiencia.

"Puede aumentar la cantidad de energía utilizada si implementa su código muy cerca de su usuario en un conjunto de equipos menos eficientes, en lugar de colocarlo en el medio de la nada en el equipo de mayor eficiencia en el centro de datos de mayor eficiencia", dice Myton.

La nube puede reducir la energía, pero aumentar la demora: “Debes resolver estas ventajas y desventajas: podrías aumentar el procesamiento de la CPU, porque tienes un procesador más rápido que puede reducir el tiempo. Y la memoria también tiene un costo de energía”.

Hay mucho trabajo por hacer allí sobre la eficiencia del software de las aplicaciones móviles, dice. Los teléfonos están diseñados para funcionar de manera eficiente, porque el cliente necesita que sigan funcionando durante mucho tiempo entre cargas, pero no siempre dividen el software de la misma manera.

“Hay casi una diferencia filosófica entre Android e iOS”, dice Mytton. “Android por lo general quiere hacer más en la nube y le descarga muchas cosas, mientras que los dispositivos iOS están haciendo cada vez más en el dispositivo. Eso tiene que ver en parte con la forma en que Google y Apple piensan sobre su infraestructura y dónde se encuentran sus competencias principales, y hay un elemento de privacidad detrás de ello”.

Solo ejecútalo en el lugar correcto

Hay otra complejidad añadida muy importante. El mismo software puede tener una huella de carbono diferente en un momento o lugar diferente, porque se ejecuta en un hardware más eficiente o en un servidor alimentado por electricidad de bajo carbono.

Esta observación lleva a otro importante tablón de software verde. Se puede hacer software que reduzca su consumo de energía y las emisiones que causa, cambiando dónde y cuándo opera.

“El software verde también intenta cambiar sus operaciones, y por lo tanto su consumo de energía, a momentos y lugares donde la electricidad disponible proviene de fuentes bajas en carbono como la eólica, la solar, la geotérmica, la hidroeléctrica o la nuclear”, dicen los autores del libro.

“Alternativamente, su objetivo es hacer menos en momentos en que la red eléctrica disponible es intensiva en carbono. Por ejemplo, podría reducir su calidad de servicio en medio de una noche sin viento cuando la única energía disponible se genera a partir del carbón. Esto se llama conciencia del carbono”.

1645789248-cusp-of-a-new-era-of-carbon-efficient-software-sanjay-podder-green-software-foundation1.jpg
– Green Software Foundation

“Soy un gran admirador de esto”, dice Currie. “Google ha estado trabajando en esto durante años y ha hecho cosas realmente interesantes. Hay trabajos que no son tan sensibles al tiempo; cosas como entrenar un sistema de aprendizaje automático. Se pueden retrasar un par de horas hasta que sople el viento o cuando el sol esté a punto de salir”.

El ejemplo práctico del que habla Google es la codificación de vídeos de YouTube. “Cuando subes un video, quieres que esté disponible relativamente pronto”, dice Mytton. “Pero no importa si es media hora o una hora después de subirlo. El procesamiento y la codificación es un trabajo de una sola vez, y pueden trasladarlo a una región con energía más limpia”.

Google puede hacer esto porque posee muchos centros de datos, en muchas regiones, y tiene los datos. En la actualidad, esos datos aún no están completamente disponibles para los clientes. “Recientemente, los tres grandes proveedores de la nube comenzaron a permitir que los clientes obtengan información sobre la intensidad de carbono de las cargas de trabajo que están ejecutando”, dice Mytton.

Una vez que los usuarios tengan esa información, podrían rediseñar sus aplicaciones distribuidas sobre la marcha, para enviar cargas de trabajo donde la intensidad de carbono sea más baja. Pero necesitan datos precisos y comparables, y las primeras implementaciones de los principales actores tienden a ser tableros diseñados para mostrar su propio servicio de la mejor manera.

“Los datos simplemente no han estado disponibles y, en general, todavía no están disponibles en su mayor parte”, dice Mytton. "Este es un desafío particular, y Green Software Foundation tiene un grupo de trabajo que está investigando el acceso a los datos y haciendo que sea de código abierto".

Si eso se resuelve, los usuarios pueden comenzar a cambiar la carga ambiental de verdad: "Con esto, me refiero a cosas como mover cargas de trabajo a regiones donde hay más energía limpia disponible en un momento determinado, o elegir cómo va a programar trabajos en función de la disponibilidad de energía limpia”.

Y más allá de eso, el cambio de carga también podría abordar otras métricas como el consumo de agua y la energía incorporada en la fabricación del hardware.

Por supuesto, mover las cargas de trabajo para seguir los suministros de energía limpia tendría un efecto en la huella de los centros de datos, porque podría dejar las máquinas inactivas, y esto haría que su carbono incorporado se volviera más significativo en la huella general del sistema.

“Si los servidores no se usan todo el tiempo, entonces deben durar más”, dice Currie. “Si resolvemos nuestro problema, les dará a ustedes [hardware] un problema. Retrasar el trabajo no es una obviedad, significa que tenemos que equilibrar estas cosas”.

En el pasado, los servidores inactivos eran una sugerencia herética, ya que la sabiduría del mundo de la Ley de Moore era que los activos debían usarse continuamente y reemplazarse rápidamente con versiones de mayor rendimiento.

Ese mundo ya se acabó. Las nuevas generaciones de hardware no tendrán las mismas mejoras de rendimiento y las generaciones anteriores se mantendrán en uso durante más tiempo, especialmente a medida que las organizaciones avanzan hacia la reducción de las emisiones integradas y una economía circular.

¿Podemos hacer que suceda?

Los creadores de software verde se toman en serio cambiar las cosas, pero tendrán que trabajar en contra de los instintos de la industria de que más es siempre mejor.

Los grandes operadores de centros de datos creen que pueden continuar con un crecimiento sin trabas, si son neutrales en carbono.

Aquellos que administran el software, incluso el software de infraestructura subyacente que se usa mucho todo el tiempo, muy a menudo no califican la eficiencia lo suficiente.

Los proveedores de la nube “quieren asegurarse de que el uso de sus recursos tenga un impacto ambiental mínimo o nulo, por lo que están poniendo todos sus esfuerzos en tratar de ser neutrales en carbono y llegar a cero neto”, dice Mytton. “Te cuentan todas las cosas buenas que están haciendo en torno a la compra de energía renovable y todo ese tipo de cosas, en lugar de centrarse necesariamente en cómo usar menos recursos, porque esas son las cosas por las que te están cobrando”.

Mytton señala que la Green Software Foundation cuenta con mucho respaldo de Microsoft, pero elogia su trabajo: “El GSF ha hecho un buen trabajo al ser independiente de los productos en la nube de Microsoft o algo por el estilo, aunque mucha gente de Microsoft está involucrada. Pero ahora estamos viendo mucha competencia entre los proveedores de la nube sobre quién puede ser el más ecológico.

“Google ha liderado esto durante bastante tiempo, pero creo que Microsoft también está haciendo un muy buen trabajo. Simplemente están mirando cosas diferentes y están en diferentes líneas de tiempo”, dice, señalando que Amazon Web Services se está quedando atrás en cuanto a transparencia y ambientalismo.

La respuesta del movimiento Green Software a estas preguntas se reduce a una simple guía.

“Apague las cosas que no se usan, sea eficiente”, dice Currie. "No haga las cosas por si acaso, apague las cosas mientras no se usan y apague los sistemas de prueba durante la noche".

“¿Está almacenando más datos de los que necesita? Deshágase de todo o transfiéralo a un almacenamiento a largo plazo como una cinta.

“La mayor victoria es siempre hacer menos”.