Hardware Tuning

Validators in Mainnet and Testnet always need to have post-provisioning hardware optimizations to make sure they are performing at maximum capacity on Solana.

The list below is not exhaustive, but it contains most of the optimizations that the Hayek Validator Kit automates on new servers using the Ansible role hw_tuner, which is run automatically with every client playbook.

References

Unattended Upgrades

After Ubuntu 24, you need to make sure you disable unattended upgrades on your validator server.

Disable Manually

First you must check the file /etc/apt/apt.conf.d/99needrestart and make sure there's no -m u CLI option there. See this Ubuntu official forum discussion for details.

cat /etc/apt/apt.conf.d/99needrestart

If you see a line like the one blelow (which contains -m u)

DPkg::Post-Invoke {"test -x /usr/lib/needrestart/apt-pinvoke && /usr/lib/needrestart/apt-pinvoke -m u || true"; };

Edit the file and remove -m u

Save the file and exit nano: CTRL+o, ENTER, CTROL+x , and check again:

Disable with Ansible

You can accomplish the same by running the following Ansible task. See this Solana Discord Validator Support thread for details on the origin of this task.

System Update

Always make sure your server is up to date

CPU scaling governor

There are multiple tune ups needed here. Follow the guide below for details:

Disable Swaps

On perf oriented setups, swap is completely disabled. vm.swappiness=0 means swap is still technically active. if you want max perf run without swaps and enough ram: swapoff -a.

References HERE and HERE.

Swappiness

This is NOT NEEDED RIGHT NOW.

POH Core Affinity

This optimization should be done AFTER the agave validator is running.

Now that you know for sure what is your nearest available core. Set the POH thread to core that core (2 in our example)

There is a well-known bug in Anza's Agave validator software related to core_affinity if you isolate your cores. You can create a script to identify the pid of solpohtickprod and set it to your chosen core (eg. core 2 in our example)

Add this content

Turn the script file into an executable and run it:

By following these steps, core 2 will run at full speed without any TDP limits and any interrupts. In this example, core 2 runs at 5.9 GHz with overclocking.

See this Solana Discord thread related to this optimization.

Last updated

Was this helpful?