Latency refers to the time between initiating an action and experiencing the outcome such as a mouse click to pixel response which may be described as the entire latency pipeline. While several factors determine a computer's overall performance, latency is one primary driving factor that contributes to the perceived responsiveness of a system (1). There are several components in the latency pipeline (1). Reducing the time spent in any subcomponent of the pipeline contributes to reducing the time of the overall pipeline.
In this guide, you will learn how to configure your hardware, the operating system and software to reduce the time of the entire pipeline. Reducing the time of the pipeline is achieved in several ways such as overclocking the hardware, reducing CPU overhead by minimizing unnecessary interrupts and context switching and much more. It is important to mention that the content is not limited to minimizing latency. The guidance also elaborates on aiding privacy, addressing security concerns and improving the overall user experience. Namely, Windows is notorious for its ever-growing bloatware and third-party telemetry (1, 2).
As pre-modified Windows ISOs and setup scripts have gained popularity over the years, the convenience of using them may be appealing to cut down on setup time. However, fine-tuning your own installation of Windows to suit your needs will outperform such projects that cater for a general audience. Furthermore, some of these projects are not open source so apart from them being potentially malicious, the performance and user experience related changes are unknown thus you will not be able to benchmark how certain changes influence performance scaling on your system as explained in the Benchmarking section. They also lack information related to configuring the hardware, BIOS, overclocking, component stability and much more which is profoundly impactful but seems to be completely disregarded by the user base. On the contrary, the guidance involves instructions to customize an official Windows ISO using DISM then reinstall Windows which is necessary to eliminate apparent inconsistencies between systems assumed in the guidance.
The contents and information included in this repository will inevitably change over time. To stay up to date, it is recommended to review what has changed once in a while. At the time of reviewing, take a note of the 7 digit SHA code in the latest commit (e.g. 2428150
) then use the URL below as an example to compare what has changed since the noted commit.
https://github.com/amitxv/PC-Tuning/compare/2428150..main
Before diving into the main content, it is important to learn and understand how to benchmark properly and what the appropriate tools for a given task are as you will need to carry out your own experiments throughout the guide to assist in decision-making (e.g. settings to use, verify performance scaling) rather than blindly applying settings.
- FrameView - PC Latency in games that support PC Latency Stats and frame pacing
- PresentMon - Various metrics such as frame pacing and GPU Busy. See a full list here
- Windows Performance Toolkit - Advanced performance analysis library for Windows. Measure ISR/DPC execution times with xperf
- Mouse Tester - Polling interval, X/Y counts and more plots against time
- NVIDIA Reflex Analyzer - End-to-end latency
- Frame-Time-Analysis - Analyze CSV data logged by the programs mentioned above including 1%, 0.1% lows metrics
- Latency Grapher - Analyze latency results from RLA, FrameView and PresentMon
Users are expected to follow the guidance in the sequential order listed below, starting with Physical Setup, moving on to the Pre-Install Instructions and finishing with the Post-Install Instructions. Each subsequent step is contingent upon the completion of preceding steps.
- See docs/research.md
-
Windows Internals, Part 1: System Architecture, Processes, Threads, Memory Management, and More
-
Windows Internals, Part 2