The Energy Impact of Grid Computing
I was exploring the Internet to see what happened to SETI’s @home project - I once was a member and ran their client on a Windows 2000 machine in my office. I was quite surprised to see that the project had evolved and was still alive and well. More interesting than that was the myriad of projects that were using distributed or "grid" computing.
It started me thinking about problem solving in general. If you need large amounts of computer power (e.g. a very expensive supercomputer and infrastructure), you may limit what problems you try to solve. However, if large amounts of computing power is available and inexpensive (or free), then those seeking to solve complex problems tend to take advantage of it.
For those of you not familiar with grid computing, here’s a brief tutorial. Traditional computers solve problems in a linear or serial fashion similar to solving long division. You work on a piece of the problem and when complete you move on to the next section. The results of the first calculations are used in the next step so it proceeds in a serial fashion. Distributed computing uses many computers to solve a problem by breaking it up into tiny pieces. Each piece is assigned to a single computer for processing so they can all work in parallel greatly speeding up the result.
Only certain types of problems can be solved this way. For instance, the long division example above does not segment well for distributed computing. It does segment well for vectored computing which works like an assembly line, but requires dedicated processing elements. Problems like weather forecasting, computational fluid dynamics and certain mathematical problems like fractals can all be broken into small pieces and solved in this manner. In the worlds of physics, pharmaceutical research, genome analysis and others there are many problems well suited to this type of computing. The pieces are independent of one another and somewhat easily isolated to individual computer elements.
Typically, distributed computing is done with super computers designed with multiple processor cores such as those built by IBM and other vendors. These systems will have anywhere from 64 to over 1024 independent computing elements (in many cases using multi-core processor chips which multiply the processing capability even more). This effectively provides thousands of times the computing power that would be available from a single high speed computer.
Now, imagine millions of computers tied together into one massive supercomputer. You no longer have simply 1000 computing elements, but millions of them. By tying together average home computers (which are usually pretty snappy by today’s standards) using the Internet, this is exactly what you have. This is grid computing, or tying together computing elements with a communication grid such as the Internet. The computers are not tightly coupled as in dedicated cluster supercomputers. They can come and go as users take the tasks on and off line. By simply the shear number of computers in the grid, large problems can be solved using this technique.
It does take software to coordinate the distribution of data sets and the collection of results. One such technology is BOINC which stands for Berkeley Open Infrastructure for Network Computing. The BOINC platform allows users to distribute their problems over the grid and collect results. Many projects, such as SETI have moved to BOINC.
While looking at several of the grid computing sites, I started thinking about the power consumed by the computers in the grid. Typically, the clients are screen savers that scavenge computer time when the user is away (or not using the machine). When you walk away from your computer and the screen saver kicks in, instead of moving images around to prevent CRT burn-in (old school), it starts up the compute tasks assigned to the machine.
If you’re like me, I rarely turn off my computers to get around the time it takes to "boot-up" the machine. Instead, I set the computer to enter into a sleep mode while being idle which greatly reduces the power consumption of the machine. In this mode small parts of the system stay powered up to monitor mouse or keyboard activity to alert the computer to “wake up” and go into full power mode. This can dramatically lower the power consumption from 150 watts (full speed with LCD on) to 20 of watts or less (LCD off, hard drives powered down, graphics off-line, processor speed reduced to a crawl, etc.).
Looking at this, 20 watts may still seem high considering it is on all the time, but compared to 150 watts it’s a considerable savings. If you consider a single grid system like BOINC has over 500,000 computers in their cluster, the additional compute time increases the overall power consumption dramatically. If you assume a computer sleeps 70% of the day while the user is away from the machine, the overall power is reduced to 14% of the normal level (I think I’m going to do some measurements and advise in a later post). For 500,000 machines entering sleep mode, that is a reduction of over 65 megawatts of power! Over the period of one day, each computer would consume 1.4 kW-hrs and for 500,000 units the total daily energy consumption is 708,000 kW-hrs.
Since the BOINC client does not allow the computer to enter sleep mode, the power consumption of the machine stays relatively flat all day. Only the LCD display can be powered down (or enter stand-by mode). To calculate the average active power of the system, let’s assume the LCD is allowed to enter stand-by mode while the client runs. A modern LCD such as the Dell E228WFP consumes roughly 40 watts while running and 2 watts in stand-by. So, the LCD can power down, but the computer is still running at full power since it is reading and writing to the hard drive and doing intensive calculations. The power of the system is only reduced to roughly 112 watts due to the LCD display entering stand-by mode (See diagram below).
If you now consider that each machine running the client will consume roughly 112 watts for 70% of the time, each machine uses a little over 2.9 kW-hrs per day (compared with 1.4 kW-hrs per day for a non-grid computer). At US$0.16 per kilowatt-hour, that’s an increase in cost of only US$0.24 per day (US$7.20 per month) for any one user. However, the grid now consumes 1.481 million kW-hrs per day compared to 708,000 kW-hrs which is an increase of 773,000 kW-hrs per day.
If you assume an average U.S. household consumes roughly 30 kW-hrs per day, that increase is the equivalent of adding 25,700 average homes to the power grid. This is not necessarily a bad thing, since solving incredibly compute-intensive problems could lead to a better world for humanity... but it does make you think "wow, that’s a lot of power!" Till next time...