- General
- Cooling
- Minimize Interference
- Configure USB Port Layout
- Configure Peripherals
- BIOS
- Stability, Hardware Clocking and Thermal Performance
-
A new installation of Windows is recommended after major hardware changes including but not limited to motherboards, CPUs, platforms and chipsets
-
Avoid multi-CCX Ryzen CPUs due to latency penalty incurred from inter-CCX communication (1, 2)
-
Favor wired over cordless (e.g. peripherals, Wi-Fi) due to the degraded performance and inconsistency associated with wireless devices, aggressive power-saving features for a longer battery life where applicable along with the downside of being negatively affected by interference and transmission overhead (1, 2, 3, 4, 5)
-
An SSD or NVMe is strongly recommended due to the degraded performance and excessive interference of HDDs (1). Ensure that there is always a sufficient amount of free space as SSDs slow down as they are filled up although most drives are overprovisioned from factory (1, 2)
-
Assess the condition and performance of storage devices with CrystalDiskInfo and CrystalDiskMark
-
Check for and update the firmware for devices including but not limited to NVMe, NICs, peripherals and more
-
Avoid single-channel and mismatching RAM (1). Refer to the motherboard manual to ensure that they are in the correct slots. Consider the memory trace layout when determining the amount of sticks to use (1)
-
Favor PCIe ports that go straight to the CPU rather than PCH, this typically applies to M.2, NVMe and GPUs. This can be determined with the
PCIe Bus
category in HWiNFO -
Ensure that your PCIe devices under the
PCIe Bus
category are running at their rated specification such asx16 3.0
in HWiNFO. The current link width/speed of the device should match the maximum supported by the device-
The link speed for GPUs that aren't limited to P-State 0 may decrease when idling. Check with GPU-Z while running the built-in render test
-
-
IRQ sharing is problematic and is a source of high interrupt latency (1). The causes may be due to the hardware or software configuration. I recommend enabling message signaled interrupts to rule out the software related causes then check that there is no IRQ sharing caused by the hardware configuration by typing
msinfo32
inWin+R
then navigating to theConflicts/Sharing section
-
If you have more than one onboard Ethernet NIC, consider using the one that supports MSI-X by checking in MSI Utility or GoInterruptPolicy as it is required for Receive Side Scaling to function properly (1). This can be achieved by plugging the Ethernet cable into the corresponding port on the motherboard
-
Measure and minimize bufferbloat as it is a cause of high latency and jitter in packet-switched networks caused by excess buffering of packets (1, 2)
-
Avoid daisy-chaining power cables anywhere in your setup
-
Favor shielded cables and avoid unnecessarily long ones as they offer more protection against interference (1)
-
Clean dust from components and heat sinks as they have the potential to cause short circuits and reduce airflow (1)
-
Clean the pins and connectors of components. Use compressed air to remove dust from slots before installing components such as PCIe, NVMe, RAM and more
-
Don't make the mistake of plugging in the display cable in to the motherboard port in the event of a dGPU being present
-
If you aren't already using the partition style you would like to be using, you should switch now because some settings listed in the BIOS section depend on the partition style (search for "GPT/UEFI"). The official method to convert the partition style is to wipe and convert the disk using diskpart within Windows setup (1). GPT/UEFI is recommended for most systems (1)
-
Consider what Windows version you will be using because some settings listed in the BIOS section depend on the Windows version used (search for "Windows")
-
Avoid a multi-monitor setup as there is the potential for greater processing overhead (1)
-
Remove the side panels from your case as they tend to trap heat or consider an open-bench setup (beware of dust)
-
Delid your CPU and use liquid metal for a significant thermal improvement (1). Direct die and lapping are also worth considering however users should assess the risk with carrying out these procedures
-
Consider contact frames and offset mounts if applicable
-
Assess contact patches on the IHS/Die and cold plate
-
Use high-quality thermal interface material and an adequate amount upon application
-
Avoid tower and air coolers due to limited cooling potential and lack of space for fans to cool other components such as RAM and VRMs (1)
-
Mount your AIO cooler properly
-
Use non-RGB fans with a high static pressure
-
Ensure not to overload the motherboard fan header, especially if you are using splitters
-
Remove the heat sink from your RAM and get creative with mounting a fan (140mm recommended) over it using cable ties
-
Use an M.2/NVMe heat sink
-
Optionally mount a fan over VRMs, CPU backplate, storage devices, PCH and other hot spots
-
Replace thermal pads with higher-quality ones if the stock pads are inadequate
-
Repaste GPU due to factory application of thermal paste often being inadequate and optionally replace the stock fans with higher quality ones
-
Move devices that produce interference including but not limited radios, cell phones, routers and more away from your setup as they have the potential to increase latency due to unwanted behavior of electrical components (1, 2)
-
Ensure that there is a moderate amount of space between all cables to reduce the risk of coupling
-
Disconnect unnecessary devices from your motherboard, setup and peripherals such as LEDs, RGB light strips, front panel connectors, USB devices, unused drives and all HDDs. Refer to USB Device Tree Viewer for onboard devices (LED controllers, IR receivers) and disable them in BIOS if you can not physically disconnect them
- Some motherboards have the motherboard's High Definition Audio controller linked to the XHCI controller (1)
Note
Take a note of any BIOS related changes as they might be reset in the first few steps of the BIOS section.
-
Familiarize yourself with which USB ports correspond to given XHCI controllers as some ports shown in USB Device Tree Viewer may not be physically accessible. It is recommended to plug a device into every accessible port on your system including but not limited to the motherboard I/O ports then take note of which controller and port they appear in USB Device Tree Viewer
-
Ryzen systems have an XHCI controller that is directly connected to the CPU which can be identified under the
PCIe Bus
category in HWiNFO (1). It is usually the XHCI controller that is connected to anInternal PCIe Bridge to bus
which is also labeled with the CPU architecture -
Favor the first few accessible ports on the desired XHCI controller. Avoid companion ports which is indicated in the right section of the program and internal headers
-
If you have more than one XHCI controller, you can isolate devices such as your mouse, keyboard and audio devices (if any) onto another controller as they have the potential to interfere with polling consistency (1). Another controller may be made available by using ports connected to the USB 3.0 front panel header. Always verify with USB Device Tree Viewer
-
Most modern peripherals support onboard memory profiles. Configure them before configuring the operating system as you will not be required to install the bloatware to change the settings later. More details on separating environments for work/bloatware and your real-time application with a dual-boot in the next section
-
Higher DPI reduces latency and helps to saturate polls with motion data (1, 2, 3). Use the highest DPI possible without sensor smoothing. If your game uses raw input, you can reduce the pointer speed in Windows to offset the sensitivity from higher DPI. Otherwise, leave the slider at the default position as input will be negatively affected due to scaling
- One way to determine whether a given application is using raw input is to spy on the raw input API calls with API Monitor or check whether the
enhance pointer precision
option has any effect in-game. If you are still unsure or have doubts, leave the slider at the default position
- One way to determine whether a given application is using raw input is to spy on the raw input API calls with API Monitor or check whether the
-
Higher polling rate reduces jitter and latency (1, 2, 3). Higher polling rates may negatively impact performance depending on your hardware so adjust accordingly. This is less of an issue after the May 2023 Windows 11 update (1)
-
USB output is limited to ~7A and RGB requires unnecessary power (1). Turn off lighting effects or strip the LED from the peripheral as running an RGB effect/animation can take a great toll on the MCU and will delay other processes (1, 2, 3)
-
Use Mouse Tester to check whether each poll contains data. As an example, if the interval is spiking to 2ms (500Hz) or higher from 1ms (1kHz), this is problematic and may be due to several variables such as the device itself, cable, power issues, hardware, operating system and more. You may need to lower or disable the XHCI interrupt moderation interval if there are multiple devices generating interrupts on the same XHCI controller during the benchmark
-
Carefully use an air dust blower to remove dirt and debris from the mouse sensor lens without damage
-
Factory reset your monitor and reconfigure the settings. Avoid post-processing effects and set overdrive/AMA to an acceptably high setting as it reduces latency but comes with a penalty of additional overshoot (1)
Warning
🔒 Some recommendations outlined in this section may negatively impact security. Users should assess the security risk involved with modifying the mentioned settings.
-
Modifying BIOS is never without risks. Explore methods to flash a stock BIOS such as USB flashback or a CH341A programmer if clearing CMOS does not restore everything to its original state
-
Check for BIOS updates and positive changes in the change log such as increased memory stability. Beware of problems brought up in reviews and forums
-
Check Spectre, Meltdown and CPU microcode status after following the steps in the Spectre, Meltdown and CPU Microcode section on your current operating system. If you are unable to reproduce the results in the example images, you may need to roll back the microcode on a BIOS level if possible
-
Resizable BAR
-
Ensure that the settings you are changing scale positively and make note of them for future reference/backtracking to resolve potential issues
-
Reset all settings to default settings with the option in BIOS to work with a clean slate
-
Motherboard vendors hide/lock a lot of useful settings so that they aren't visible to a regular user. For clarification, unlocking BIOS corresponds to making hidden settings accessible and visible
-
On some boards, you can toggle
Hidden OC Item
orHide Item
to unlock BIOS if present -
The easiest approach to take is to change the access levels within the BIOS using UEFI-Editor or AMIBCP then flash it
-
For changing hidden settings without flashing a modded BIOS, you can start by configuring what is already accessible in UEFI then use GRUB or SCEWIN to change the hidden settings
-
-
Disable Hyper-Threading/Simultaneous Multithreading if you have enough CPUs for your real-time application. This feature is beneficial for highly threaded operations such as encoding, compiling and rendering however using multiple execution threads per CPU increases contention on processor resources and is a potential source of system latency and jitter (1). Disabling HT/SMT has the additional benefit of increased overclocking potential due to lower temperatures in which, a similar concept can be applied to Intel's E-Cores (efficiency cores)
-
Limit C-States (e.g. search for C1E, C6), P-States (e.g. search for P0), T-States, S-States (e.g. search for S3, S6), D-States (e.g. search for D3) and hibernation to the minimum or disable them completely. It is a source of jitter due to the process of state transition and accounts for 10s to 100s of microseconds (1)
-
Verify C-State residency with HWiNFO
-
Verify S-State status with
powercfg /a
in CMD
-
-
Disable Virtualization/SVM Mode and IOMMU (Intel VT-d/AMD-Vi) if applicable as they can cause a difference in latency for memory access (1). Virtualization also has the potential to affect BCLK (1)
- Verify Virtualization/SVM status in Task Manager
-
Disable all power-saving features such as ASPM (Active State Power Management) (e.g. search for L0, L1), ALPM (Aggressive Link Power Management), DRAM Power Down Mode, DRAM Self Refresh (may cause issues with restart/shutdown), Power/Clock Gating and more. You can also look out for options named power management or power saving. Search the internet if you are unsure whether a given setting is power-saving related
-
Disable unnecessary devices such as WLAN, Bluetooth, High Definition Audio (if you aren't using motherboard audio) controllers and unused USB ports (refer to USB Device Tree Viewer), PCIe slots, iGPU, SATA and RAM slots
-
Disable Trusted Platform Module. On Windows 11, a minority of anti-cheats (Vanguard, FACEIT) require it to be enabled
- Verify TPM status by typing
tpm.msc
inWin+R
- Verify TPM status by typing
-
Enable High Precision Event Timer. If the setting is hidden, there is a good chance that it is enabled by default
- On AMD systems with newer AGESA firmware, changing this setting will have no effect
-
MBR/Legacy requires Compatibility Support Module and typically, only the storage and PCIe OpROMs are required, but you can enable all of them if you are unsure. Disable CSM if you are using GPT/UEFI
- Windows 7 GPT/UEFI requires CSM and OpROMs unless you are using uefiseven
-
Disable Secure Boot. On Windows 11, a minority of anti-cheats (Vanguard, FACEIT) require it to be enabled
- Verify Secure Boot status by typing
msinfo32
inWin+R
- Verify Secure Boot status by typing
-
Disable Fast Startup, Suspend to RAM or similar options
-
Disable Spread Spectrum and ensure BCLK frequency is close to the desired value as possible (e.g. 100.00MHz not 99.97MHz) in HWiNFO/CPU-Z
-
Disable Legacy USB Support as it generates unnecessary SMIs (1). You may need to turn this on to install a new operating system or to access BIOS
-
Disable XHCI Hand-off
-
If applicable, disable software installation options such as ASUS Armoury Crate
-
Set the primary graphics to dGPU instead of iGPU if applicable
-
Set PCIe link speed to the maximum supported such as
Gen 3.0
. This may be represented as gigatransfers per second (GT/s) -
Disable Execute Disable Bit/NX Mode. A minority of applications (Valorant) require it to be enabled
-
If you are configuring a static frequency/voltage for the CPU in the next section, disable dynamic frequency features such as Speed Shift, SpeedStep and set the AVX offset to 0 so that the CPU does not downclock during AVX workloads. Precision Boost Overdrive for Ryzen CPUs is an alternative option to a static frequency and voltages
- In some cases, the settings mentioned above may prevent the processor from exceeding its base frequency despite manually configuring it in BIOS. Adjust accordingly if this is encountered and ensure that your CPU is able to run boost clocks in HWiNFO
-
Configure fan curves or set a static, high, noise-acceptable RPM. Set your AIO pump speed to full if applicable
-
When overclocking, you may be required to raise various power limits if the default limits are exceeded
-
Backup BIOS by saving the current settings to a profile or export to local storage as clearing CMOS will wipe all settings if you need to do so while overclocking
- In my experience on various motherboards, loading a saved profile doesn't restore some settings after clearing CMOS. It is recommended to dump nvram using a tool such as SCEWIN so that when you restore a profile, dump nvram again then compare it to the previous/original one to see whether anything failed to restore by using a text comparison tool such as the Notepad++ Compare plugin or Visual Studio Code
Ensure that all of your hardware is stable before configuring a new operating system as unstable hardware can lead to crashes, data corruption, worse performance or irreversible damage to hardware. The effectiveness of testing for instability varies between tools which is why it is important to use a range of them for a sufficient amount of time (a non-exhaustive list of recommended tools is listed below).
-
It is recommended to dual-boot a fresh installation of Windows to avoid corrupting your main operating system while stress-testing and overclocking. In terms of memory stress-testing, this also allows the stress-test to use more RAM as it isn't being hogged by potential bloatware on your current installation
-
Verify and validate changes within software to avoid unexpected results and behavior (e.g. frequency, voltages, timings)
-
Save a BIOS profile before each change when overclocking such as changing CPU/RAM frequency and RAM timings so that you don't lose progress if you need to clear CMOS. Refer to the last point in the BIOS section regarding restoring settings properly
-
Use HWiNFO to monitor system sensors. A higher polling interval can help to identify sudden spikes but not transients on a microsecond scale as an example. Avoid running while benchmarking as it has the potential to reduce the reliability of results
-
A single error or crash is one too many
-
Monitoring voltages where applicable due to potential overvolting
-
Overclocking does not necessarily mean that the system will perform better due to factors such as error correction. You should verify whether whatever you are changing scales positively by adopting a systematic testing methodology in benchmarks such as liblava and Intel Memory Latency Checker
-
There are countless factors that contribute to stability such as temperature, power delivery, quality of hardware in general, silicon lottery and more. To apply additional stress when tuning any component (e.g. CPU, RAM, GPU), consider turning off case, RAM fans or reducing RPM along with generating extra heat (e.g. GPU load, room heaters) while stress-testing
-
Avoid thermal throttling at all costs. As a reminder, ambient temperature will generally increase during the summer. Deliberately underclock if your cooler is inadequate. A thermally stable component with an overall lower frequency is always better and safer compared to thermal throttling at a higher frequency/voltage
-
Monitor WHEAs. HWiNFO has an error count
-
If desired, configure load-line calibration. This isn't a recommendation for what mode to use
-
Overclock your GPU. You may be required to flash a BIOS with a higher power limit
-
Ensure to disable
CUDA - Force P2 State
with NVIDIA Profile Inspector to prevent memory downclocking while stress-testing -
See A slightly better way to overclock and tweak your Nvidia GPU | Cancerogeno
-
-
Configure RAM frequency and timings manually for a significant performance improvement (1). XMP does not tune many timings nor does it guarantee stability
-
Configure static all-core frequencies and voltages for the CPU. Variations in hardware clocks can introduce jitter due to the process of frequency transitions. Precision Boost Overdrive for Ryzen CPUs is an alternative option to a static frequency and voltages
-
The previous two bullet points affect each other in terms of stability which means that your RAM overclock may become unstable after overclocking your CPU, so run RAM stress-tests again and adjust your CPU settings if required
-
Tune and optionally overclock your display with Custom Resolution Utility and test for frame skipping
- Aim for an
actual
integer refresh rate such as 60.00/240.00, not 59.94/239.76. Using the exact timing can help achieve this
- Aim for an
-
Linpack
-
PorteusLinpack Bootable by SlovenianSlobodan#9859
-
Login is root, password is toor
-
The default config is 100 trials of 10 GB problem size. To customize the config, type
vi lininput_xeon64
. See this video for a basic overview of the vi editor -
Use the sample config as an example to chain multiple tests
-
To run the test, type
./runme_xeon64
-
To access sensors while the test is running, press
Ctrl+Alt+F2
to switch to TTY 2 then type./sensors
. UseCtrl+Alt+F1
to switch back to TTY 1 to view the output of the test -
lin_xeon64.txt
is overwritten with the results. Usevi lin_xeon64.txt
to open it in the vi editor so that you can freely scroll through the trials
-
-
Linpack Xtreme Bootable - Outdated binaries
-
Use a range of problem sizes
-
Residuals should match, otherwise, it is a sign of instability
-
GFLOP variation should be minimal
-
-
MemTest86 (bootable)
-
MemTest86+ (bootable)
Continue to docs/pre-install.md.