How to Estimate Energy Efficiency as Part of a Server Upgrade
With the increasing cost of energy and the increasing concern about global warming, people are beginning to consider energy efficiency as a factor in server upgrade decisions. This article will explain how to estimate energy efficiency during a server evaluation process.
Server computer systems divide into two major groups. The first group consists of servers that operate at very-high-load conditions almost continuously. The second group consists of servers that may be powered on 24x7, but only respond to transactions and other requests as needed.
For example, the computers at the National Weather Service are in the first group and small business e-mail servers, Web servers and file servers are in the second group. We presume that the staff at the National Weather Service already has some way to estimate server energy efficiency. Therefore, this article is focused on the small business servers.
The following discussion of the "server load profile" is essential because modern computer systems make extensive use of power-saving technologies that reduce system energy use during periods when the machine is lightly loaded or idle.
Step 1: Introduction to "Percent Busy" and Load Profile
Almost all small business servers experience variations in workload based on time of day and/or day of week. Most of these machines will be more busy during weekdays and less busy during the evenings and on weekends. Many business servers will have a weekday, 24-hour usage profile that will look something like this graph:
This profile shows 10 hours a day where the server is less than 20 percent busy and 14 hours a day where the server is essentially idle. Allowing for Saturday and Sunday, the load profile for the week might look like the next graph:
This weekly profile graph indicates approximately 50 hours per week at less than 20 percent busy and 118 hours per week idle.
Step 2: Collect Load Profile Data for the Current Server
To collect the "percent busy" data for a Unix/Linux server, type the following command:
vmstat 900 > /tmp/vmstat.data<ENTER>
Then let the command run for 24 hours. Next, print the file "/tmp/vmstat.data". The output file will contain four lines per hour for the 24-hour period. Review the "cpu/id" column. This shows the percent idle for the computer's CPU. By subtracting the percent idle number from 100, you can get the "percent busy" figure. These numbers will provide an idea of how the load varied over the 24-hour period.
For a Windows-based server, execute the "perfmon" program. Click the "+" button to add a trace. Then select "% Processor Time" (the default on my machine). Click "Add" and then click "Close".
Next, right-click on the bottom line of the window ("Counter/% Proc..."). Select "Properties" and type "900" into the field labeled "Update automatically every ... seconds". Then click "Apply" and finish by clicking "Close". Then wait 24 hours.
The graph window displays 100 data points. At four samples per hour for 24 hours, 96 data points will almost completely fill the graph window. By viewing the graph, which will be in the same format at Graph 1 above, you can estimate the time spent at various load levels.
Step 3: Revise the "Percent Busy" Estimates
It is important to adjust these "percent busy" numbers because the new server will almost certainly be faster than the current server. If the current server has one CPU at 1 GHz and the proposed new server has a dual core CPU at 2 GHz, all the percent busy figures that were collected in Step 1 should be divided by four.
Step 4: Summarize the Hours into Several Groups
Take the revised data from Step 3 and create a small table with several ranges of load levels. The data shown in Figure 2 might summarize in the following way:
Step 5: Calculate the Estimated Server Power Consumption
If you multiply the power consumption rate (watts) at each load level, times the hours per week that the server will be operating at that load level, you can estimate the power consumed per week.
There are currently two major sources for estimated server power consumption: 1) The Neal Nelson Power Efficiency Test and 2) the SPECpower Benchmark. Both tests provide information about server power consumption at various "percent busy" load levels. Data from either source can be used for these calculations.
The following two examples are based on data from the Neal Nelson Power Efficiency Test. The two servers have similar configurations, capacities and prices:
The Neal Nelson Power Efficiency Test data can be found on the Neal Nelson Benchmark Laboratory Web site. Select the appropriate page from the "Server Energy Efficiency Test Results". Consult the appropriate line of data and refer to the columns headed "Watts". There are six values provided for watts. These correspond to "Idle" plus five different transaction arrival rates.
For the purposes of these approximations, you might consider the five transaction arrival rates as 20 percent, 40 percent, 60 percent, 80 percent and 100 percent busy.
The SPECpower test results are located here. On the SPEC page, you should review the list of machine configurations and choose the ones that most closely match the machines that you are considering. Then click on the "text" or "HTML" link to view the "Full Disclosure" report.
Toward the top of the full disclosure report, there is a table that gives the power consumed at various "percent busy" load levels. Select values from the column labeled "Power - Average Power (W)" that correspond to the percentage estimates from above. The calculations described herein will provide an estimate of the relative energy efficiency for two or more servers.
Neal Nelson is President of Neal Nelson & Associates. He has more than 35 years experience with all aspects of complex computer systems. As the chief developer, owner and president of an independent hardware and software performance evaluation firm he has tested more than 500 computer systems. A Web site with some of his test results can be found at http://www.worlds-fastest.com. He can be reached at firstname.lastname@example.org.