Windows VPS: Performance Tweaks
A fresh Windows VPS has several settings designed for desktop/GUI that waste resources unnecessarily on a server. These optimizations apply to Windows Server 2019/2022.
1. Disable Unnecessary Services
Open services.msc and set these services to Disabled (if you don't use them):
| Service | Reason |
|---|---|
| Windows Search (WSearch) | Indexing not needed on server |
| Print Spooler | Only if you don't print |
| Windows Update (prod only) | Manage manually |
| Superfetch / SysMain | Useless with SSD or low RAM |
| Themes | Not needed with minimal RDP |
| Connected User Experiences (DiagTrack) | Telemetry |
| Windows Error Reporting (WerSvc) | Reduces I/O on crash |
Via PowerShell (faster):
$services = @("WSearch","Spooler","SysMain","DiagTrack","WerSvc","Themes")
foreach ($s in $services) {
Stop-Service -Name $s -Force -ErrorAction SilentlyContinue
Set-Service -Name $s -StartupType Disabled
}
2. Power Plan: High Performance
Windows Server often uses balanced plan that throttles CPU.
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
powercfg /query SCHEME_CURRENT | Select-String "Power Scheme GUID"
Or via GUI: Control Panel → Power Options → High Performance.
On some hypervisors (KVM/Hyper-V) this setting is essential to avoid CPU latency.
3. Disable Animations and Visual Effects
Reduces CPU/GPU load and improves RDP responsiveness.
# Via registry
$path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects"
Set-ItemProperty -Path $path -Name VisualFXSetting -Value 2
Or: right-click This PC → Properties → Advanced system settings → Performance Settings → Optimal performance.
4. Optimize Network (TCP/IP Stack)
# Increase TCP send/receive buffers
netsh int tcp set global autotuninglevel=normal
netsh int tcp set global chimney=enabled
netsh int tcp set global rss=enabled
netsh int tcp set global netdma=enabled
# Disable Nagle algorithm for low latency (gaming server, FiveM, etc.)
# Go to HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<ID>
# Add: TcpAckFrequency = 1 and TCPNoDelay = 1
For gaming servers (FiveM, MTA, etc.) via registry:
$interfaces = Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces"
foreach ($iface in $interfaces) {
Set-ItemProperty -Path $iface.PSPath -Name "TcpAckFrequency" -Value 1 -Type DWord -ErrorAction SilentlyContinue
Set-ItemProperty -Path $iface.PSPath -Name "TCPNoDelay" -Value 1 -Type DWord -ErrorAction SilentlyContinue
}
5. Paging File (Virtual RAM)
On VPS with limited RAM, configure pagefile optimally:
# See current configuration
Get-CimInstance Win32_PageFileSetting
# Manual setup: initial 2048 MB, max 4096 MB on C:
$cs = Get-WmiObject Win32_ComputerSystem
$cs.AutomaticManagedPagefile = $false
$cs.Put()
$pf = Get-WmiObject Win32_PageFileSetting
$pf.InitialSize = 2048
$pf.MaximumSize = 4096
$pf.Put()
Adjust based on available RAM: generally 1x-1.5x physical RAM.
6. Reduce RDP Overhead
If you access via Remote Desktop, these settings improve connection performance:
In Group Policy Editor (gpedit.msc):
Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services →
Remote Desktop Session Host → Remote Session Environment
- Limit maximum color depth: 16-bit
- Remove wallpaper for Remote Desktop Connections: Enabled
- Do not allow font smoothing: Enabled
7. Disable Windows Defender (isolated environments only)
Only if you already have another protection (e.g. hardware firewall, sandboxed environment). Don't disable Defender on internet-exposed servers without alternative protection.
Set-MpPreference -DisableRealtimeMonitoring $true
# To disable completely (requires Tamper Protection disabled)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1
8. Optimize Disk
# Disable indexing on C: drive (for SSD)
$drive = Get-WmiObject Win32_Volume -Filter "DriveLetter='C:'"
$drive.IndexingEnabled = $false
$drive.Put()
# Disable 8.3 filename (improves NTFS performance)
fsutil behavior set disable8dot3 1
# Disable last access timestamp (reduces I/O)
fsutil behavior set disablelastaccess 1
9. Clean Startup
Remove programs from automatic startup:
# See what starts on boot
Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location
# Or use msconfig or Task Manager > Startup
Expected Results
After these tweaks on a 2 vCPU / 4 GB RAM Windows Server 2022 VPS you should see:
- -20-30% RAM usage at rest
- RDP latency reduced noticeably
- CPU response improved on peak loads
Related articles
Change Language to English on Windows Server
How to set English as primary language on Windows Server VPS
RDP: Access, Port, Multi-User and Issues
Complete guide to Remote Desktop on Windows Server - connection, port change, multiple simultaneous users and troubleshooting
IIS: Web Server on Windows Server
Install and configure IIS (Internet Information Services) on Windows Server. Hosting websites, ASP.NET, PHP and SSL management.
