CPU Throttling can occur when your Operating System and BIOS are set to Power Savings mode. On certain types of computers, DEV boxes and desktop for example, this may be OK. However, this is not something that you typically want on a Production Database Server.
For many organizations, being green is part of their mission statement. Perhaps it is even part of your own personal philosophy. However, as a DBA you must consider the cost / benefit analysis of Power Savings versus Performance.
Are these DEV servers, or do they run an application critical to your business? Would slow performance cause safety problems for anyone who depends upon your data?
Another important factor is licensing and hardware costs. SQL Server Enterprise Edition costs about $30,000 per processor. How much do your servers and racks cost?
Add up all of your servers and CPUs and do a little math. For example, if you have four servers with two CPUs each in your onsite data center. Then, another four servers in your offsite data center. That makes for a total of 16 CPUs with a licensing cost of approximately $480,000. Let's call this M, for money.
OK, let's find out what percentage of your capicity you are actually using...
True Speed = T / C * 100
Looking at my example numbers, I would have:
True Speed = 1600 / 2800 * 100
True Speed = 0.5714 * 100
True Speed = 57%
Now, let's use that number to find out how much money you are throwing out the window...
Wasted Money = (1 - T / C) * M
Looking at my example numbers, I would have:
Wasted Money = (1 - 1600 / 2800) * 480000
Wasted Money = (1 - 0.5714) * 480000
Wasted Money = 0.4286 * 480000
Wasted Money = $205,714.29
Since we are true geeks, let's use SQL Server to do the calculations for us.
-- CPU Throttling Analysis
declare @CPUSpeed as numeric;
declare @ThrottlingSpeed as numeric;
set @CPUSpeed = 2800; -- CPUID Specification
set @ThrottlingSpeed = 1600; -- CPUID Core Speed
-- calculate how much throttling is going on
select cast(cast(@ThrottlingSpeed / @CPUSpeed * 100 as numeric(5,2)) as varchar) + '%'
as 'What your cruise control is set to...';
-- now, let's factor in your licensing costs...
declare @LicensingCost as numeric;
-- add up your total licensing costs
set @LicensingCost = 480000;
-- figure out how much money you are wasting
select '$' + cast(cast((1 - @ThrottlingSpeed / @CPUSpeed) * @LicensingCost as numeric(10,2))as varchar)
as 'How much bread you''re wasting...'
|CPU Throttling Analysis|
How much does it cost your business when critical processes take longer to complete? Will you lose sales? Will patients receive the care they need?
Are there costs associated when certain processes are not able to finish in a short amount of time?
If a customer has to wait on your application longer than the competition, then you may lose that customer.
Only you can answer these questions, they will be different for every business.
This one is a little harder to quantify. After you have gotten management's attention with the money figures from above, use this angle to tie everything back to the business. Say it with me, you are not a DBA, you are a Business Partner.
If you can create a simple spreadsheet or PowerPoint presentation which illustrates this, then you will have a much easier time of convincing management of your proposal.
CPU Utilization versus CPU Speed
One misconception is that if you do not have high CPU utilization, then you do not need to worry about CPU throttling. If look at my example, you will see that we are not maxing out the CPU, so why worry about it?
Consider a highway. Let's say we have a six-lane highway, but only three lanes have traffic in them. This is 50% utilization.
Next, let's consider the Speed Limit. If the same six-lane highway has a speed limit of 35 MPH, then it will take us a while to get out of Dodge. Remember the Lamborghini you bought? If the engine has a governor that keeps you legal, then you may as well have bought a Pinto. That is throttling.
So, even though your utilization is low, i.e. lots of lanes are open, you may have the cruise control set to half of what the car is capable of. You have lots of cycles available for processing; they're just running at half speed.
Tricking Out the Camaro
The fix for this is pretty easy, but it takes two steps. First, you will need to check your BIOS settings and see what your Power Management settings are currently set to. Each manufacturer is different, so my screenshot my not reflect the hardware you have in your shop. However, it should be fairly similar. The bad option is highlighted in red, while the good option is highlighted in green.
|BIOS Power Savings The Bad with the Good|
Next, under the Control Panels, select Power Options and make sure High Performance is selected.
|Power Savings Turned Off|
Trust, but Verify
Once you have taken care of these two steps, run CPUID again and verify that you are getting all the CPU that you have paid for. Have fun, and enjoy that Lamborghini; you've earned it!