Friday, October 9

Great Footprint Convo

Great carbon footprint conversation from NYTM:

Does anyone at Meetup or here have an idea of what the carbon footprint is for Meetup.
As Programmers do you try and make your clients aware about the carbon footprint of their websites and what options they have to lower it. I would say that if programmers design their code effectively they could make an impact on lowering the energy consumed by the servers in terms of lowering CPU cycles and spin cycles on the hard drives.Do any of the many developers get questions around such issues from their clients?
I was made aware of these questions at a lecture I attended recently.
In 2006 in the U.S. data centers and servers excluding client machines consumed 61Billion kWh and 55% of that energy consumed came from coal fired power plants
Wonder if anyone here thinks along these lines in terms of web design and it's impact on the Environment.
Would welcome your thoughts...

Baba –

Today power consumption inefficiencies is largely a hardware design problem at the data centers. Most of the gains to be had can be realized in areas outside of software. What people discuss on the internet is all new best of breed technologies that only a few large players are doing. I don’t necessarily agree with Steve that you need massive scale of Google/Microsoft to gain some efficiency (even today). As in any industry, scale will always let you exploit market efficiencies and this is the case for those big players. If you do not have massive scale there are still some things that can be done. I do agree that if you are a small shop it is mainly a hardware problem for you but even there you can do interesting things. Think shutting down VMs and client machines during night and powering on in the morning – everyone can do this today – but hey, where would the cool screensaver aquarium fish swim?

Long term we will see some shifts in programming paradigms that address energy efficiency. The game will most likely play out as a bigger part of distributing components of a program and smarter interaction among those components. The more the system executing your workload can know about it the better it can exploit efficiencies. The push to new programming paradigms is already happening today but it is not really being positioned as energy efficient but the focus today is on scaling, dealing with failure, operations and flexibility. I think multi-core is forcing a lot of changes in this direction and the pure-virtual talk from all the cloud providers, think AWS, Azures and AppEngines are also similar in some aspects. I like to think of the DOD as an early indicator of technology shifts and you can already see their field technologies being distributed and dynamic in the direction some of the changes are going. A soldier’s backpack does some processing, a tank does some relaying, drones gather data and coordinate components. All components dynamic and tolerant of failure, working smarter together. Here the scarcity of resources has forced them to create new techniques and sooner or later everyone will realize the scarcity of some resources (cost!!).

Smarter software drives smarter workloads, and there are many companies that are taking advantage of distributed components to optimize their workload processing. Shifting a workload from one data center to another based on time of day can have a large impact on cooling required during night time. Different parts of the world have different energy costs at different times and there are efficiencies to be exploited there that can be done based on smarter software. This is reality today and people are doing this. Hadoop is another example of workload optimization, moving the processing closer to the data – no longer are you wasting time on transport and waiting for data to arrive. A lot of networking infrastructure will need to keep up with the software changes and globally this is taking too long. Look at IPv6 adoption (and IPv4 is a scarce resource!!) as a real problem, support for internalization for addressing or countless other problems. We live in a globalized internet based world but the network protocols have failed to keep for many years – this must change!

The problem today with software only approaches is the margins are too small to make any significant and measurable impact on the energy footprint. If you are a small shop, you are not really worrying about power consumption too much. If you are a developer working on a custom application it is really hard to get any kind of gauge on your power consumption, but this will change. Hardware based usage monitors are not used or understood by most programmers today (it requires fixed hardware configurations) but as things move into virtualized environments it becomes much easier to estimate the power consumption (even if it’s theoretical) of a workload (even across networks and multiple systems). If you can completely shift your programming models you can certainly gain some efficiencies today (even though AWS, Azure, AppEngine are more expensive than the alternatives) but at the expense of cost – what you may gain today is the added flexibility that these models provide (and some of the pitfalls!). The cost benefits for now are mainly for the big players.

Today certainly some programmers think about being “green” but it is not the driving factor choosing a programming paradigm. Today the value added services drive this (operational mainly), but maybe long term we will see power cost become a bigger factor. The reality is somewhere in between, my thinking today is that until the entire software industry as a whole gets some measurable data and begins practicing it (rather than the few big players) we won’t be seeing power consumption being the significant driver of changes in programming paradigms. What you can sell today is better SLA guarantees, then try to squeeze out efficiencies from the process. The big guys and most of the education system is also doing a poor job in distributing some of the lessons learned from operating infrastructure for many years. Certainly, our own DOD can and should be augmenting our education system in a more significant way but that is not it’s primary purpose.

Most of the software industry is not really practicing anything PROFESSIONAL nor ethical - that’s what the industry really needs. This is the really sad state of affairs that we should be discussing on this list (rather than all the other noise that we did not sign up for).


Alex Osipov