Skip to content

Hyyote/In-depth-Windows-tweaking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

154 Commits
 
 
 
 

Repository files navigation

In-depth-Windows-tweaking

This guide covers tweaks beyond "advanced" PC optimization focusing on Windows settings that are more on the experimental side. Basic BIOS and Windows settings are widely documented, so they’re not included here. Most advanced tweaks are in my .bat files.

You can search for things you are interested in by searching for keywords like Privacy, Telemetry, CoreParking, Kernel settings, while undefined ones are in Miscellaneous.

   https://github.com/Hyyote/files-/tree/main/tweaks


1. The Operating System (ranting, feel free to skip)

  • Linux isn't suitable for competitive gaming because tweaks don't go as deep as the ones you can do in Windows. Distros are similar in latency and input feel, which I found to be subpar compared to any version of Windows.

  • I used to recommend Windows 7 and Windows 10 1803 specifically, but I have to admit that later versions are superior only because of perceived stability, higher performance and better software compatibility at the moment, but all of them have higher idle latency. I don't find much difference between Windows 10 22H2 and Windows 11 23H2/24H2.

  • Windows 11 always used to feel smoother on the desktop but when I ran tests and played games, the two felt identical.

  • Windows 10 is more resilient when it comes to tweaks and it can be stripped down to its bones without sacrificing any functionality (22 services running), while Windows 11 needs UWP app support, StateRepository, DWM and many other things running to ensure nothing breaks and can be taken down to around 31 services.


2. Windows Tweaks

  • First, install a version of Windows you like, it can be a stock install or a custom one, however I really dislike having a lot of things running in the background in the first place, so I recommend one that is pre-tweaked such as my NTLite builds or Tiny11

  • Install Windows without internet connection until you ensure all the update services and automatic driver updates are disabled

  • Disable audio enhancements in the sound control panel


Import a power plan

Recommendation:

  • my power plan
    Does not work well with E-cores apparently, so they have to be disabled or a workaround has to be found.

Use AppxPackagesManager to clean up apps you don't need.


Autoruns: unhide Windows services (more can be disabled but these are the ones I find safe to disable, even though my NTLite preset and .bat scripts disable all of the unndeeded ones)

  • services: disable Appinfo, ApMgmt, AppReadiness AppXSvc, ApxSvc, BITS, Bluetooth related, CDP services, ClipSVC, CredentialEnrollment services, DeviceFlow services, KeyIso, PlugPlay, sppsvc StorSvc, UDK related, WMI, Wpn services

  • drivers: disable amd related (if not needed for AMD), AppleSSD, Bluetooth related, HidBatt, HidBth, i8042prt, Microsoft_Bluetooth, RFCOMM, swenum, WacomPen


BCDEdits:

There are ongoing debates about which is the right configuration for each version of Windows, but I got the best results with these commands with HPET disabled in BIOS and Windows.

bcdedit /deletevalue useplatformclock
bcdedit /set useplatformtick yes
bcdedit /set disabledynamictick yes
bcdedit /set allowedinmemorysettings 0x0>nul 2>&1
bcdedit /set linearaddress57 optout>nul 2>&1
bcdedit /set bootlog no>nul 2>&1
bcdedit /set bootux disabled>nul 2>&1
bcdedit /set disabledynamictick yes>nul 2>&1
bcdedit /set disableelamdrivers yes>nul 2>&1
bcdedit /set ems no>nul 2>&1
bcdedit /set event no>nul 2>&1
bcdedit /set hypervisorlaunchtype off>nul 2>&1
bcdedit /set isolatedcontext no>nul 2>&1
bcdedit /set lastknowngood no>nul 2>&1
bcdedit /set nx alwaysoff>nul 2>&1
bcdedit /set recoveryenabled no>nul 2>&1
bcdedit /set sos no>nul 2>&1
bcdedit /set tpmbootentropy forcedisable>nul 2>&1
bcdedit /set vm no>nul 2>&1
bcdedit /set vsmlaunchtype off >nul 2>&1
bcdedit /set bootmenupolicy legacy
  • Device Manager: View -> Devices by type
    For your storage device under Disk drives, Turn off write-cache buffer flushing by going into Properties -> Policies

  • Disable power saving on every device with a script or manually, since it takes around one minute to do (https://github.com/Hyyote/files-/tree/main/Disable%20power%20saving)

  • Disable unnecessary devices: (System Management BIOS, PCI Express Root Ports, ISA Bridge, PCI standard RAM Controller, generic software components, unused usb devices, generic pnp monitor) Show hidden devices, disable Motherboard resources

A properly broken device manager after Windows and hidden BIOS tweaks can look like this:


Interrupt Affinities

  • The devices worth assigning to separate cores are:

USB host controller
GPU
Network Interface Controller (Spread across CPU cores if using ReceiveSideScaling)

  • Use benchmarks to determine which core gets you the highest performance for the GPU.

  • In Device Manager, the PCI to PCI Bridge directly above your GPU entry also has to be bound to the same core.
    Check its location by right clicking on the device -> Properties -> Location: PCI Bus 1-0-0 for example.

  • Affinities don't work for storage controllers


MorePowerTool settings







2.5. Poorly documented tweaks

Display scaling and custom resolutions

  • It's generally recommended to use display scaling and native resolutions. This can only be achieved by creating custom resolutions in Custom Resolution Utility. Confirm display scaling being used by checking the active resolution in the monitor's menu.

  • Windows has settings for scaling but by creating a custom resolution, the result will always be display scaled, however it's ideal to set it anyway.

  • HKLM\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration<DisplayID>\00\00

change Scaling to 2

  • 1: Identity scaling
  • 2: No scaling
  • 3: Full-screen
  • 4: Aspect ratio

  • I recommend removing every GPU scaled resolution using Scaled Resolution Editor from the author of CRU.
  • As for Custom Resolution Utility, every existing value can be deleted and unchecked, then new ones can be added in the DisplayID 2.0 Detailed Resolutions tab.
  • Using Manual mode, Horizontal Total should be lowered, while Vertical Total should be raised if you are using GSync or Vsync, othwerise it should be lowered. Front porch and Sync width can be lowered without consequences. The aim is also to achieve an exact refresh rate (240.000 Hz instead of 239.980).


This is a new method by Proviise and there is a noticeable difference between using this and other CRU methods such as TDT or just simply adding resolutions to the main tab.



Device Cleanup

  • This one is hugely overlooked. There are only benefits to cleaning up unused entries if you don't use multiple devices that rely on Windows settings instead of onboard memory.

  • Device Manager -> View -> Devices by connection -> Show hidden devices

  • You can bulk remove them with: https://www.uwe-sieber.de/files/DeviceCleanup_x64.zip (use at your own risk, since the tool isn't open source)

Hidden devices should be checked on every startup.

RWEverything

Some of these settings might be already set in the BIOS, however I've seen a lot of strange behaviour in Windows regarding clock speeds and power saving features changing without a clear explanation.

  • Disable xHCI IMOD on your USB controller for lower latency. Replace BAR1 with your own BAR1 from RWEverything and replace the four digits at the end.
    W16 0xB0000004+0x2020 0x0 → W16 0xB0002024 0x0 (this is just an example)

W16 BAR1+2020 0x0
W16 BAR1+2040 0x0
W16 BAR1+2060 0x0
W16 BAR1+2080 0x0
W16 BAR1+20A0 0x0
W16 BAR1+20C0 0x0
W16 BAR1+20E0 0x0
W16 BAR1+2100 0x0

  • Disable CPU power management features (SpeedStep, thermal throttling, prefetchers)
    WRMSR 0x1a0 0x00000000 0x00000000

  • Remove CPU package power limits (allows unlimited power draw)
    WRMSR 0x610 0x00000000 0x00FFC000

  • Clear additional power limit registers for CPU cores and iGPU
    WRMSR 0x638 0x00000000 0x00000000
    WRMSR 0x640 0x00000000 0x00000000
    WRMSR 0x618 0x00000000 0x00000000

  • Disable Spectre/Meltdown security mitigations
    WRMSR 0x48 0x00000000 0x00000000
    WRMSR 0x49 0x00000000 0x00000000

  • Disable CPU idle states (C1E)
    WRMSR 0x1FC 0x00000000 0x00000000

  • Set turbo multiplier to a specific value. 32 (hex 50) stands for 5 GHz.
    WRMSR 0x1AD 0x00000000 0x32323232

  • Copy your final settings in one line and separate them with semicolons (;) so they can be applied in one step on every startup.
    Eg. WRMSR 0x610 0x00000000 0x00FFC000; WRMSR 0x638 0x00000000 0x00000000; WRMSR 0x640 0x00000000 0x00000000

More RWE settings: https://github.com/Hyyote/files-/blob/main/RWEverything%20settings/settings.txt

credits:

Proviise for the CRU, MorePowerTool and general Windows settings

https://github.com/eskezje lots of undocumented registry values

https://twitter.com/BEYONDPERF_LLG process priority settings and removing clock interrupts

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors