Even after setting the Windows power plan to "High Performance", many administrators find their Windows Server 2008 R2 systems still exhibit dynamic CPU frequency scaling. This becomes evident when using monitoring tools like CPU-Z which show fluctuating clock speeds.
The issue stems from multiple layers of power management:
- Windows Power Plan settings
- Processor Power Management in BIOS
- Intel SpeedStep or AMD Cool'n'Quiet technologies
1. BIOS Configuration
First, access your server's BIOS and disable:
- Intel SpeedStep Technology (for Intel CPUs)
- AMD Cool'n'Quiet (for AMD CPUs)
- Any other CPU power saving features
2. Windows Power Plan Adjustment
Create a custom power plan with these settings:
powercfg -duplicatescheme 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
powercfg -setactive [new-guid]
powercfg -changename [new-guid] "Maximum Performance" "Custom power plan for fixed CPU frequency"
3. Registry Tweaks
Add these registry settings for complete control:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power]
"CsEnabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\bc5038f7-23e0-4960-96da-33abaf5935ec]
"Attributes"=dword:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\893dee8e-2bef-41e0-89c6-b55d0929964c]
"Attributes"=dword:00000002
To confirm CPU scaling is disabled:
- Run CPU-Z and observe constant clock speed
- Execute this PowerShell command to check current power state:
Get-CimInstance -ClassName Win32_PowerPlan -Namespace root\cimv2\power | Where-Object {$_.IsActive} | Select-Object ElementName
While disabling scaling provides consistent performance, be aware of:
- Increased power consumption (10-20% more in our tests)
- Higher thermal output requiring adequate cooling
- Potential reduction in CPU lifespan under constant max voltage
For Hyper-V hosts, consider using this PowerShell script to manage power settings across multiple nodes:
$nodes = "Server1","Server2","Server3"
foreach ($node in $nodes) {
Invoke-Command -ComputerName $node -ScriptBlock {
powercfg -setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Power" -Name "CsEnabled" -Value 0
}
}
When running performance-critical applications on Windows Server 2008 R2, you might notice unexpected CPU throttling even after setting the power plan to "High Performance". This occurs because modern processors implement dynamic frequency scaling (Intel SpeedStep or AMD Cool'n'Quiet) at the hardware level.
Before making changes, verify your current CPU behavior with these PowerShell commands:
# Get current power profile
powercfg /getactivescheme
# List all power schemes
powercfg /list
# Check processor power management settings
powercfg /q SCHEME_CURRENT SUB_PROCESSOR
For complete CPU scaling disablement, we need to modify both OS and BIOS settings:
- BIOS Configuration:
- Disable "Intel SpeedStep Technology" or "AMD Cool'n'Quiet"
- Disable "C-States" and "Package C-State" options
- Windows Registry Changes:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power] "CsEnabled"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Processor] "Capabilities"=dword:00000007 "PerfBoostMode"=dword:00000001
After reboot, verify using:
# Check current processor state
Get-WmiObject -Class Win32_Processor | Select-Object -Property DeviceID, CurrentClockSpeed, MaxClockSpeed
# Monitor real-time frequency
while($true) {
$cpu = Get-WmiObject -Class Win32_Processor
Write-Host "Current: $($cpu.CurrentClockSpeed) MHz | Max: $($cpu.MaxClockSpeed) MHz"
Start-Sleep -Seconds 1
}
For specific processor states:
# Disable all throttling
powercfg -setacvalueindex SCHEME_CURRENT SUB_PROCESSOR PROCTHROTTLEMAX 100
powercfg -setacvalueindex SCHEME_CURRENT SUB_PROCESSOR PROCTHROTTLEMIN 100
# Apply changes
powercfg -setactive SCHEME_CURRENT
If frequency still fluctuates:
- Check for third-party power management software conflicts
- Verify Hyper-V or other virtualization features aren't controlling power states
- Update chipset drivers from manufacturer's website