It is a difficlt question because there a lot of scenarios, hardware combinations & considerations to make. A benchmark is maybe not reliable and you mjust consider that every benchmark contains margin of errors (which is normal). A synthetic benchmark basically spoken gives you an idea of how well a hardware can perform a given task but the best way to rely upon results is real world usage. Too many things can affect your gaming performance, from part variances within the same product, different test benches e.g. using different CPUs/Motherboards at different settings, different test environment (e.g. temperature), different drivers & settings and sometimes different software versions (patches of games or Windows versions e.g. Build 1809 vs 1903 (No Retpoline vs Retpoline). That said do not use in-game benchmarks.
I usually use and recommend the phoronix-test-suite (it's an "real program benchmark") because it does not only benchmark certain aspects (Kernel, synthetic, component bench), it is also able to run acrosss multiple systems and checks security based parameters to see how the OS "scores". The test itself also includes parameters to show the margin of errors, so it's not an ordinary benchmark tool. it is well documented, open source and gets constantly updates. Keep in mind that you should run it multiple times to get an average overview, however those tools do not help if you have in-game problems because several games and their game engines might have several other issues (which no benchamrk can show you). I highly recommend that you run the suite, and than compare how well you favourite game runs in-game, then you have something objective to test against.
CapFrameX is a fantastic tool to identify frame drops or G-Sync/FreeSync related issues. The program is for beginners and professionals and can help to check what might causes lags or to get a overview of your hardware and how well it really performes in-game, since it supports DirectX and Vulkan API's it basically can analyze almost every application/game.
The following things should be as low as possible:
- Audio latency
- Ping/Network latency (use the ping command to quickly check your average latency which might be different [depending on several factors])
- DPC Latency (use LatencyMon to check it)
- Overall network latency (this can't be tested easily because it is depening on several factors)
- Keyboard input processing (depending on yourself + how fast the keyboard/mouse + OS processes the signals)
- Security holes - MDS, ZombieLoad, Spectre/Meltdown, L1TF etc..
The following things should be as high as possible:
- The energy profile (should be set to Ultimate), see here why.
- Frequency (only in case you do Overclocking (!)) of several components CPU/GPU (requires testing to stabilize it).
- Power Management Mode (nVidia Control Panel [NVCP]) "application controlled" is enough.
Why does it matter? Different Windows versions coming with different pre-installed apps or software. Practical you could remove them but this costs a) your time and b) you might not be able to remove all apps (easily). The Backgrounds apps and started services matter in a sense that they might result in a higher CPU/RAM usage or lags because these apps and services typically trying to update themselves in the right moment which might even ends-up with a Bluescreen (BSOD) or [crashes] (https://answers.microsoft.com/en-us/windows/forum/apps_windows_10-outlook_mail/windows-update-caused-loss-of-mail-app-windows/aec58c9c-9371-46b4-ab69-2b54353eff5c).
- Avoid Preview/Insider builds
- Avoid Pro/Home Editions
- Use Education/Enterprise or LTSC versions (if possible)
Edu./Ent. or LTSC versions have no pre-installed apps OR/AND you can take control over them without the need to rely on third-party apps or script. Group policy Editor (GPO - gpedit.msc) and the integrated Windows 10 own Settings can control every app/store/update behavior.
The driver installation order does matter and might help to solve or prevent some problems.
- OS
- Chipset (reboot)
- USB (e.g. ASMedia Technology Inc.)
- Audio/GPU (the order doesn't matter)
- Monitor/keyboard/mouse etc.
Why is the specific order needed? Some driver(s) and their installers having troubles detecting your current hardware if e.g. the chipset isn't installed first, other programs simply conflicting with the IRQ order (older mobos).
It's not necessary to re-install the entire OS in case you made a mistake, I suggest you use DDU in combination with RAPR in order to get rid of possible leftovers and old/redundant drivers in Windows driver store folder. at this point I also suggest to create a "Driver" folder on another HDD/SSD/USB drive and place all drivers you got in there. It's maybe the first time a bit more effort to collect all of them but it helps to update the drivers + keeps on eye on the current installed ones and possible (in case you store the last two versions) you have a revision in case the newer drivers are problematic.
In some situations the offered drivers from Windows Update Servers (WUS) are outdated compared to the ones which the OEM (AMD, nVidia, Intel etc.) offers which means that they can cause some performance or even crash related issue. My own advice is to use Wumgr which is an open source program to take control over Windows Updates (in case you don't want to mess with GPO's/Registry). Windows 10 Build 1903+ got an function to manually install drivers via the integrated GUI (in this case you might not need Wumgr).
Even some OEMs might have outdated drivers (listed on the driver pages e.g. Realtek), Station-Drivers or Win-Raid Forum often have more up-2-dated drivers.
I recommend:
- Create a folder on a usb drive or external drive where you store all you drivers (in case you re-install Windows and to keep track of your current installed drivers).
- Label the folders and files correctly which shows you directly which version you currently have installed.
Snappy Driver (Origin - the version which is open-source and without ads) can help you in case your OEM doesn't provide a manual to identify your current hardware, however in my experience such tools should be avoided because they maybe install or identify the wrong hardware which might only ends-up with more problems and they could contain ads or are infected with malware (since they are a huge target because driver based malware is harder to remove/spot and the installer might execute the installation process under administrative rights to gain access). My advice is (even if it's more effort) to manually identify the installed hardware create ther driver folder and download/verify the driver from trusted websites sich as Station-Drivers & Win-RAID.
There is a wide-spreading myth that says that it helps to install repacked versions to gain gaming performance. This is wrong and there was never any evidence given, but it's true that such repacks a) are smaller in download size (compared to the original packages) b) helping you to avoid wasting SSD/HDD space on your OS partition. For example you can use abbodi1406 vcredist package which only installs the latest Microsoft Visual C++ Redistributable Runtimes which comes without any payload - in other words you save a lot of space. While this in theory is a good thing it is not always practical because some Game Stores such as Steam or even some applications which you install forcing you to re-install those packages because they won't probably detect that you already have those runtimes installed. This basically means you override such a repack with the official MS packages and at the end you won't gain anything out of it.
Problems:
- Repacks could contain malware
- Steam and other Stores, or even some application overriding or forcing you to install official runtimes even if never ones are already installed
- No performance benefits
- Switch unneeded services (services.msc) from automatic to manual start. This lowers CPU/Ram usage and migrates possible attack scenarios e.g. it prevents NetBios attacks (if that service was disabled). Keep in mind that some services can't be disabled (depending on the Windows 10 Build) which then require you to disable it via registry.
- Disable unneeded tasks in Task Scheduler, pretty much as same as above the goal is to reduce CPU/Ram consumption and to possible migrate attack scenarios.
- Disable unneeded logs in Event Viewer - This is more or less optional, performance wise this doesn't gain anything but it helps your SSD life since Windows writes those events in the background to a file/disk.
- Do not install any AntiVirus product, if you like to use an AV then stick with Windows Defender because it's good enough as proven in 'independent' AV tests.
- Use only a good NAT Firewall and Sandboxie (paid product), sandbox untrusted or unknown stuff. Sandboxie has no performance drops unless you use it 'cracked' or load huge apps into it. Windows 10 Build 1903/20H1 will get it's own free but limited sandbox function which would be a free alternative to Sandboxie.
- Change Core Parking only in XP, 7 and 8 because since Windows 10 the OS itself controls it automatically already.
- Delete unneeded UWP apps and uninstall the stuff you won't need, this gains some SSD/HDD space, reduces memory/cpu usage (since such apps mostly running in the background or trying to update themselves).
Gaming on Windows 10 is not necessary better or worst, it's depending on several factors such as game development API, Engine itself, if the game was 'designed' and 'optimized' for Windows 10/7, the driver and driver profiles and many more things.
Some applications and their integrated drivers from external devices like a mouse can cause serious FPS drops. Keep in mind that you should update the driver ASAP once their is a new one out, this might not only fixes performance problems, it often also fixes security holes, simply review the changelog manually before you apply the changes to see if it's worth it and do backups before you install a new upgrade.
- Download EmptyStandbyList and put it under e.g. C:\ (ensure you don't move this file)
- Right click > Properties and select 'Run as Admin' under compatibility.
- Open your Task Scheduler > Create Task (on the far right).
- General Tab (give it a name, doesn't matter which one!). Under security options > Change user or group > Advanced > Find Now > go down and choose SYSTEM (important to make it run silently in the background). Tick 'Run with highest privileges' and 'Hidden' at the bottom. You can find an example here.
- Click Triggers Tab > New > On a schedule > One Time. Tick repeat task every 5 minutes (possibly excessive but it causes no issues). Also choose 'for the duration of: indefinitely'
- Actions tab > Start A program > Point to the EmptyStandbyList.exe file.
- The Standby memory is automatically cleared every 5 mins.
List of Windows tasks to disable (privacy & performance related):
- \Microsoft\Windows\Application Experience > AitAgent, ProgramDataUpdater
- \Microsoft\Windows\Autochk > Proxy
- \Microsoft\Windows\Customer Experience Improvement Program> Consolidator, KernelCeipTask, UsbCeip
- \Microsoft\Windows\DiskDiagnostic > Microsoft-Windows-DiskDiagnosticDataCollector
- \Microsoft\Windows\Maintenance > WinSAT
- \Microsoft\cSystemRestore > SR
- \Microsoft\Windows\WindowsBackup > ConfigNotification
- \Microsoft\Windows Defender > MP Scheduled Scan
- \Library\Microsoft\Windows\WindowsColorSystem\Calibration Loader (disable it if you use your own Display Color Profile)
- \Microsoft\Microsoft\CDPUserSvc (see here)
Copy the following text and save it as antitelemetry.cmd
.
@echo off
%windir%\system32\reg.exe query "HKU\S-1-5-19" 1>nul 2>nul || goto :eof
echo.
echo Anti-Telemetry blocking script
echo Some of the commands may return error(s) - you can ignore them!
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /v DisableOSUpgrade /t REG_DWORD /d 1 /f >nul 2>&1
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /f /v IncludeRecommendedUpdates /t REG_DWORD /d 0 >nul 2>&1
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\OSUpgrade" /f >nul 2>&1
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\OSUpgrade /v AllowOSUpgrade /t REG_DWORD /d 0 /f >nul 2>&1
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Appraiser" /v HaveUploadedForTarget /t REG_DWORD /d 1 /f >nul 2>&1
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\AIT" /v AITEnable /t REG_DWORD /d 0 /f >nul 2>&1
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\ClientTelemetry" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\ClientTelemetry" /v DontRetryOnError /t REG_DWORD /d 1 /f >nul 2>&1
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\ClientTelemetry" /v IsCensusDisabled /t REG_DWORD /d 1 /f >nul 2>&1
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\ClientTelemetry" /v TaskEnableRun /t REG_DWORD /d 1 /f >nul 2>&1
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags" /v UpgradeEligible /f >nul 2>&1
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Appraiser" /f >nul 2>&1
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TelemetryController" /f >nul 2>&1
reg add HKLM\SOFTWARE\Microsoft\SQMClient\IE /v CEIPEnable /t REG_DWORD /d 0 /f >nul 2>&1
reg add HKLM\SOFTWARE\Microsoft\SQMClient\IE /v SqmLoggerRunning /t REG_DWORD /d 0 /f >nul 2>&1
reg add HKLM\SOFTWARE\Microsoft\SQMClient\Reliability /v CEIPEnable /t REG_DWORD /d 0 /f >nul 2>&1
reg add HKLM\SOFTWARE\Microsoft\SQMClient\Reliability /v SqmLoggerRunning /t REG_DWORD /d 0 /f >nul 2>&1
reg add HKLM\SOFTWARE\Microsoft\SQMClient\Windows /v DisableOptinExperience /t REG_DWORD /d 1 /f >nul 2>&1
reg add HKLM\SOFTWARE\Microsoft\SQMClient\Windows /v CEIPEnable /t REG_DWORD /d 0 /f >nul 2>&1
reg add HKLM\SOFTWARE\Microsoft\SQMClient\Windows /v SqmLoggerRunning /t REG_DWORD /d 0 /f >nul 2>&1
sc.exe config DiagTrack start= disabled >nul 2>&1
sc.exe stop DiagTrack >nul 2>&1
reg delete HKLM\SYSTEM\ControlSet001\Control\WMI\AutoLogger\AutoLogger-Diagtrack-Listener /f >nul 2>&1
reg delete HKLM\SYSTEM\ControlSet001\Control\WMI\AutoLogger\Diagtrack-Listener /f >nul 2>&1
reg delete HKLM\SYSTEM\ControlSet001\Control\WMI\AutoLogger\SQMLogger /f >nul 2>&1
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\DiagTrack /f >nul 2>&1
reg delete HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection /f >nul 2>&1
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\DiagTrack /v DiagTrackAuthorization /t REG_DWORD /d 0 /f >nul 2>&1
takeown /f %ProgramData%\Microsoft\Diagnosis /A /r /d y >nul 2>&1
icacls %ProgramData%\Microsoft\Diagnosis /grant:r *S-1-5-32-544:F /T /C >nul 2>&1
del /f /q %ProgramData%\Microsoft\Diagnosis\*.rbs >nul 2>&1
del /f /q /s %ProgramData%\Microsoft\Diagnosis\ETLLogs\* >nul 2>&1
schtasks /Change /TN "\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser" /DISABLE >nul 2>&1
schtasks /Change /TN "\Microsoft\Windows\Application Experience\ProgramDataUpdater" /DISABLE >nul 2>&1
schtasks /Change /TN "\Microsoft\Windows\Application Experience\AitAgent" /DISABLE >nul 2>&1
schtasks /Change /TN "\Microsoft\Windows\PerfTrack\BackgroundConfigSurveyor" /DISABLE >nul 2>&1
schtasks /Delete /F /TN "\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser" >nul 2>&1
schtasks /Delete /F /TN "\Microsoft\Windows\Application Experience\ProgramDataUpdater" >nul 2>&1
schtasks /Delete /F /TN "\Microsoft\Windows\Application Experience\AitAgent" >nul 2>&1
schtasks /Delete /F /TN "\Microsoft\Windows\PerfTrack\BackgroundConfigSurveyor" >nul 2>&1
TIMEOUT /T 5
To ensure the blocking settings are always set eg. after an upgrade/KB update, you can create a schedule task to run the script at logon as example:
- Copy the above mentioned script into
C:\Windows
and then open command prompt as administrator and execute: SCHTASKS /Create /F /RU "SYSTEM" /RL HIGHEST /SC ONSTART /TN BlockW10 /TR "cmd /c %windir%\antitelemetry.cmd"
Some games might have random stutter because Windows tries to free some resources (more or less good) which might causes game stutters. A more detailed explanation can be found to the issue over here. Possible workarounds in form from batch files or small utilities can be found here.
Set your power setting to maximum performance (it's not needed to use an "ultimate" power-plan) if you graphic card driver has an 'maximum performance' settings enable it too, this will ensure that the GPU uses it's full potential.
Whenever you stream games via OBS Studio, make sure you disable GameDVR, it is also a smart advice to in general stay away from it since most applications & games are simply not optimized for it - this doesn't have anything to do with that MS fucked something up it's more that most older games (and even several new ones) are not adopted to get any benefit in such low-latency mode.
Keep in mind that the registry tweak is not needed in case you're on RS5+ because Settings > Gaming > Game bar
is the way to go (since some people reporting to have other registry values).
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\GameBar]
"UseNexusForGameBarEnabled"=dword:00000000
"AutoGameModeEnabled"=dword:00000000
[HKEY_CURRENT_USER\System\GameConfigStore]
"GameDVR_Enabled"=dword:00000000
"GameDVR_FSEBehavior"=dword:00000002
"GameDVR_FSEBehaviorMode"=dword:00000002
"GameDVR_HonorUserFSEBehaviorMode"=dword:00000000
"GameDVR_DXGIHonorFSEWindowsCompatible"=dword:00000000
"GameDVR_EFSEFeatureFlags"=dword:00000000
"Win32_AutoGameModeDefaultProfile"=hex:02,00,01,00,00,00,c4,20,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00
"Win32_GameModeRelatedProcesses"=hex:01,00,01,00,01,00,c0,00,c6,02,50,54,c7,02,\
70,00,61,00,6e,00,65,00,6c,00,2e,00,65,00,78,00,65,00,00,00,8c,00,4e,8d,e1,\
74,b8,ed,d2,02,18,4c,c7,02,1e,00,00,00,b8,ed,d2,02,1e,00,00,00,0f,00,00,00,\
30,e7,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00
; Disable GameBarPresenceWriter.exe (needs same like PowerShell removal higher rights) - Do not use it, it's optional!
;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsRuntime\ActivatableClassId\Windows.Gaming.GameBar.PresenceServer.Internal.PresenceWriter]
;"ActivationType"=dword:00000001
;"CLSID"="{cbfd414c-5037-3c98-a85e-a5e7ca509cfc}"
;"Server"="Windows.Gaming.GameBar.Internal.PresenceWriterServer"
; "TrustLevel"=dword:00000000
KB4482887 does for some users decrease the gaming performance, however it does not have anything to do with Retpoline changes because it's not enabled by default. Microsoft official says that you can ignore/uninstall or hide the update. They promise to fix the performance issue with the next patchday.
// Microsoft statement
After installing KB4482887, users may notice graphics and mouse performance degradation with desktop gaming when playing certain games (eg: Destiny 2)"...
Fixed with Windows 10 Build 17763.379 and KB4489899.
Retpoline is activated by default with KB4494441 if Spectre Variante 2 (CVE-2017-5715) was activated (manually) before the KB was installed.