Linux - Overclocking Multiple Headless Nvidia GPU for CUDA Cryptocurrency Mining
Linux - Overclocking Multiple Headless Nvidia GPU for CUDA Cryptocurrency Mining
Setup
lspci | grep VGA 01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1) 02:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1) 03:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1) 04:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1) 06:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1) 07:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1)
6x Gigabyte GTX 1070 G1 Gaming (7.93 GB VRAM) pool mining Ethereum.
Steps
Firstly we will have to one-time initialize /etc/X11/xorg.conf by using Nvidia's xconfig tool including a cool-bits value of 28.
nvidia-xconfig --allow-empty-initial-configuration --enable-all-gpus --cool-bits=28
Afterwards, we can start a Xorg server headlessly as Nvidia's setting tool requires it to be up.
X :0 & # display :0
Since I am running multiple cards, I would require a loop to go through all of it. Currently these values works best for the cards I used.
- -200 core clock
- +1200 memory clock
# export DISPLAY=:0
# IFS=$'\n'
# for gpu in $(nvidia-smi -L); do
id=$(echo ${gpu} | sed -e 's/GPU //g' -e 's/:.*//g')
nvidia-settings -a [gpu:${id}]/GPUPowerMizerMode=1 -a [gpu:${id}]/GPUGraphicsClockOffset[3]=-200 -a [gpu:${id}]/GPUMemoryTransferRateOffset[3]=1200
done
As a final step, I would apply a -40 max watts undervolt as root.
nvidia-smi -pl 140
Optionally, since we do not need the Xorg server to be running anymore, we can kill it
killall Xorg
These configuration alone increased ~5MH/s per card, resulting in a 25-30MH/s overall increase!
Automated bash script
#!/usr/bin/env bash
sudo nvidia-smi -pl 140
sudo X :0 &
sleep 5
export DISPLAY=:0
IFS=$'\n'
for gpu in $(nvidia-smi -L); do
id=$(echo ${gpu} | sed -e 's/GPU //g' -e 's/:.*//g')
sudo nvidia-settings -a [gpu:${id}]/GPUPowerMizerMode=1 -a [gpu:${id}]/GPUGraphicsClockOffset[3]=-200 -a [gpu:${id}]/GPUMemoryTransferRateOffset[3]=1200
done
sudo killall Xorg
sudo systemctl start ethminer # or your own command to start your own miner