Message boards : Graphics cards (GPUs) : Guide: RTX (also GTX), increasing efficiency in Linux
Author | Message |
---|---|
I've done some research in the past, and RTX 2060 to 2080 (including 2060 Super and 2070Super), can run 'fine' at 125W. sudo service lightdm stop sudo init 3 Or replace lightdm with SDDM, GDM, or GDM3, depending on what desktop Display Manager your OS runs. - Re-log into your terminal (terminal characters should look different or blocky. If not, you can always boot into grub, recovery mode, and start the terminal from there. Works as well. After that go to your download folder (where nvidia.run file is located) and do: sudo nvidia-xconfig --enable-all-gpus sudo nvidia-xconfig --cool-bits=28 reboot The above is a one time process for every time you install new drivers, kernel, or OS. Beneath procedure needs to be repeated every time after boot, or written into a script: You then can adjust power curve in Linux terminal by typing: sudo nvidia-smi -i 0 -pl 130 Where '0' is your first GPU, this number can be 1 or 2, or higher; depending on how many GPUs are installed, and '130' is the desired watts. type a too low or too high value like '10' and the system will give an error, and show you the value range (for most RTX GPUs it's 125W to 170/225 or 280W) In GUI start menu (under preferences) you'll now be able to see nvidia-xserver, which you can use to adjust the fan curve, or overclock your GPU and RAM (be careful, you can cause system instability, or worse, break the hardware) Most of my RTX 2080 Tis have their sweet spot around +120Mhz GPU, and +1400Mhz RAM. lower end RTX GPUs might differ between 34Mhz max on low binned GPUs,+65 Mhz on 2060 1 fan designs, +100Mhz on most RTX GPUs between 2060 and 2080, and +200Mhz on high binned GPus. In any case, you don't watch GPU overclock, you generally watch highest core boost frequency, which in most designs hovers around 1875Mhz (1935Mhz for RTX 2060, 2010Mhz for ROG STRIX 2060). For single GPUs under Debian based Linux: You can run any OS from 14.04LTS to the latest 20.04, with either the repository .deb file, or the nvidia .run file. Do: sudo nvidia-xconfig --enable-all-gpus sudo nvidia-xconfig --cool-bits=28 reboot You can now adjust overclocking GPU and VRAM as well as adjust the fan curve of the GPU. See above for details. You can then adjust the power curve, by typing: sudo nvidia-smi -i 0 -pl 130 Where '0' is your first GPU, this number can be 1 or 2, or higher; depending on how many GPUs are installed, and '130' is the desired watts. type a too low or too high value like '10' and the system will give an error, and show you the value range (for most RTX GPUs it's 125W to 170/225 or 280W) | |
ID: 54573 | Rating: 0 | rate: / Reply Quote | |
if you're on ubuntu or mint (which is probably most people), it's a lot easier to use the PPA to install the nvidia drivers. sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update sudo apt install nvidia-driver-440 then you don't have to deal with all the nonsense of stopping the display manager or blacklisting the nouveau drivers, the PPA does it for you. ____________ | |
ID: 54578 | Rating: 0 | rate: / Reply Quote | |
The 2070 Super and 2080 is best ran between 129 and 135W for an open bench, and depending on the cooling around 145-155W for inside a case. Further figures: If discussing peak efficiency, that is, output vs Power input GTX1060 3GB peak efficiency occurs at 64W GTX1660 SUPER peak efficiency occurs at 75W These figures seem very low, but after the above power limit any increase in power is not met by the same increase in output. The following figures were tested on ACEMD3 ELISA tasks which had a relatively consistent runtime. The metric used to draw this conclusion was using "WATT HOURS" (Watts * Hours or energy consumed every hour) GTX1660 SUPER @ 70W (minimum) completes task in 23800 seconds = 463 WH GTX1660 SUPER @ 125W (maximum) completes task in 17100 seconds = 594 WH Splitting difference between min and max runtimes into quartiles (runtime is evenly divided between min and max) first quartile - 22250 seconds requires 74W (increase of 4W over min) = 457 WH (lower than minimum power) Second quartile - 20450 seconds requires 83W (increase of 9W over first quartile) = 471 WH Third quartile - 18850 seconds requires 98W (increase of 15W over second quartile) = 513 WH From third quartile to max there is a 27W jump So the jump in extra power required over and above the last quartile is 4W then 9W then 15W then 27W .... The increae in power is exponential when compared to the increase in runtime. This demonstrates that squeezing out the last drop of performance from the GPU requires a comparitively huge amount of power. For me, running this GPU over 98W is quite wasteful. (Running at lower power has added benefits of a cooler and quieter GPU, plus lower power bills) The exponential increase in power used was greater on the Pascal GPU (GTX1060 3GB), so it seems nVidia has "optimised" the performance curve on the Turing GPU. Bring on Ampere!! | |
ID: 54580 | Rating: 0 | rate: / Reply Quote | |
I ran some tests on my RTX 2070s (that's plural, not s for Super) over the last several days. | |
ID: 54611 | Rating: 0 | rate: / Reply Quote | |
I'm trying to understand this but the terminology you guys are using differs from what's in the nvidia-smi documentation: http://developer.download.nvidia.com/compute/DCGM/docs/nvidia-smi-367.38.pdf | |
ID: 54643 | Rating: 0 | rate: / Reply Quote | |
aurum@Rig-26:~$ sudo nvidia-smi -pm 1 ; sudo nvidia-smi -pl 150 | |
ID: 54644 | Rating: 0 | rate: / Reply Quote | |
sounds like you're running Linux? I can't see since your systems are hidden. i do all my overclocking through the Nvidia X Server settings application that is installed with the nvidia drivers on Linux, and when I've found stable settings, I drop it all into a script and I run it at startup. nvidia-settings -a "[gpu:0]/GPUMemoryTransferRateOffset[4]=400" -a "[gpu:0]/GPUGraphicsClockOffset[4]=100" but the GTX 10-series cards do not have 4 levels of clocks like the RTX cards do. so you would need a command like this: nvidia-settings -a "[gpu:0]/GPUMemoryTransferRateOffset[3]=1000" -a "[gpu:0]/GPUGraphicsClockOffset[3]=100" I set mem offset to 1000 in that command which will bring your 1080ti to the same as P0 clocks. play around with the graphics clock offset until you reach your desired clocks. ____________ | |
ID: 54645 | Rating: 0 | rate: / Reply Quote | |
So do I just set -pl 150 and let P2 pick the clocks??? | |
ID: 54646 | Rating: 0 | rate: / Reply Quote | |
PL AND clocks. PL alone will have the affect of reducing power AND losing performance. the point of overclocking on top of the power limit is to gain back lost performance. #!/bin/bash /usr/bin/nvidia-smi -pm 1 /usr/bin/nvidia-smi -acp UNRESTRICTED /usr/bin/nvidia-smi -i 0 -pl 160 /usr/bin/nvidia-smi -i 1 -pl 160 /usr/bin/nvidia-smi -i 2 -pl 160 /usr/bin/nvidia-smi -i 3 -pl 160 /usr/bin/nvidia-smi -i 4 -pl 160 /usr/bin/nvidia-smi -i 5 -pl 160 /usr/bin/nvidia-smi -i 6 -pl 160 /usr/bin/nvidia-smi -i 7 -pl 160 /usr/bin/nvidia-smi -i 8 -pl 160 /usr/bin/nvidia-smi -i 9 -pl 160 /usr/bin/nvidia-settings -a "[gpu:0]/GPUPowerMizerMode=1" /usr/bin/nvidia-settings -a "[gpu:1]/GPUPowerMizerMode=1" /usr/bin/nvidia-settings -a "[gpu:2]/GPUPowerMizerMode=1" /usr/bin/nvidia-settings -a "[gpu:3]/GPUPowerMizerMode=1" /usr/bin/nvidia-settings -a "[gpu:4]/GPUPowerMizerMode=1" /usr/bin/nvidia-settings -a "[gpu:5]/GPUPowerMizerMode=1" /usr/bin/nvidia-settings -a "[gpu:6]/GPUPowerMizerMode=1" /usr/bin/nvidia-settings -a "[gpu:7]/GPUPowerMizerMode=1" /usr/bin/nvidia-settings -a "[gpu:8]/GPUPowerMizerMode=1" /usr/bin/nvidia-settings -a "[gpu:9]/GPUPowerMizerMode=1" /usr/bin/nvidia-settings -a "[gpu:0]/GPUMemoryTransferRateOffset[4]=400" -a "[gpu:0]/GPUGraphicsClockOffset[4]=100" /usr/bin/nvidia-settings -a "[gpu:1]/GPUMemoryTransferRateOffset[4]=400" -a "[gpu:1]/GPUGraphicsClockOffset[4]=100" /usr/bin/nvidia-settings -a "[gpu:2]/GPUMemoryTransferRateOffset[4]=400" -a "[gpu:2]/GPUGraphicsClockOffset[4]=100" /usr/bin/nvidia-settings -a "[gpu:3]/GPUMemoryTransferRateOffset[4]=400" -a "[gpu:3]/GPUGraphicsClockOffset[4]=100" /usr/bin/nvidia-settings -a "[gpu:4]/GPUMemoryTransferRateOffset[4]=400" -a "[gpu:4]/GPUGraphicsClockOffset[4]=100" /usr/bin/nvidia-settings -a "[gpu:5]/GPUMemoryTransferRateOffset[4]=400" -a "[gpu:5]/GPUGraphicsClockOffset[4]=100" /usr/bin/nvidia-settings -a "[gpu:6]/GPUMemoryTransferRateOffset[4]=400" -a "[gpu:6]/GPUGraphicsClockOffset[4]=100" /usr/bin/nvidia-settings -a "[gpu:7]/GPUMemoryTransferRateOffset[4]=400" -a "[gpu:7]/GPUGraphicsClockOffset[4]=100" /usr/bin/nvidia-settings -a "[gpu:8]/GPUMemoryTransferRateOffset[4]=400" -a "[gpu:8]/GPUGraphicsClockOffset[4]=100" /usr/bin/nvidia-settings -a "[gpu:9]/GPUMemoryTransferRateOffset[4]=400" -a "[gpu:9]/GPUGraphicsClockOffset[4]=100" /usr/bin/nvidia-settings -a '[gpu:0]/GPUFanControlState=1' -a '[fan:0]/GPUTargetFanSpeed=75' -a '[fan:1]/GPUTargetFanSpeed=75' /usr/bin/nvidia-settings -a '[gpu:1]/GPUFanControlState=1' -a '[fan:2]/GPUTargetFanSpeed=75' -a '[fan:3]/GPUTargetFanSpeed=75' /usr/bin/nvidia-settings -a '[gpu:2]/GPUFanControlState=1' -a '[fan:4]/GPUTargetFanSpeed=75' -a '[fan:5]/GPUTargetFanSpeed=75' /usr/bin/nvidia-settings -a '[gpu:3]/GPUFanControlState=1' -a '[fan:6]/GPUTargetFanSpeed=75' -a '[fan:7]/GPUTargetFanSpeed=75' /usr/bin/nvidia-settings -a '[gpu:4]/GPUFanControlState=1' -a '[fan:8]/GPUTargetFanSpeed=75' -a '[fan:9]/GPUTargetFanSpeed=75' /usr/bin/nvidia-settings -a '[gpu:5]/GPUFanControlState=1' -a '[fan:10]/GPUTargetFanSpeed=75' -a '[fan:11]/GPUTargetFanSpeed=75' /usr/bin/nvidia-settings -a '[gpu:6]/GPUFanControlState=1' -a '[fan:12]/GPUTargetFanSpeed=75' -a '[fan:13]/GPUTargetFanSpeed=75' /usr/bin/nvidia-settings -a '[gpu:7]/GPUFanControlState=1' -a '[fan:14]/GPUTargetFanSpeed=75' -a '[fan:15]/GPUTargetFanSpeed=75' /usr/bin/nvidia-settings -a '[gpu:8]/GPUFanControlState=1' -a '[fan:16]/GPUTargetFanSpeed=75' -a '[fan:17]/GPUTargetFanSpeed=75' /usr/bin/nvidia-settings -a '[gpu:9]/GPUFanControlState=1' -a '[fan:18]/GPUTargetFanSpeed=100' -a '[fan:19]/GPUTargetFanSpeed=100' ____________ | |
ID: 54647 | Rating: 0 | rate: / Reply Quote | |
To set the clocks: This method of setting clocks only work for Maxwell or lower cards. Deprecated for Pascal and later. For clock control in the later models you need to use the nvidia-settings application. You use the nvidia-smi application for power level setting. | |
ID: 54648 | Rating: 0 | rate: / Reply Quote | |
[edit] In one place the clocks are referred to as GPU & RAM and in another as Core & Mem. Aren't they all a form of RAM? Core is a form of memory that was heavily used around 50 years ago. I remember my first engineering boss telling me that the company's first computer had only 64 kilobytes of core memory. The main program we worked with needed more than that, so it at first had to use unusual steps such as pushing the operating system out of memory, and loading only sections of the program into memory at any one time. RAM is random access memory, and mem is an abbreviation for memory. A GPU is NOT a form of memory. It is something that uses a lot of memory, but does not contain much of it. | |
ID: 54649 | Rating: 0 | rate: / Reply Quote | |
Thanks Keith, The InterWeb Never Forgets bit me again :-)To set the clocks: I abandoned that approach earlier in favor of trying to get GPUPowerMizerMode=1 to force it into P0. But there's some magic trick to getting this coolbits thing to work which I have yet to figure out. I'm digesting this man page hoping that I may understand what I'm doing: http://manpages.ubuntu.com/manpages/bionic/man1/nvidia-settings.1.html | |
ID: 54655 | Rating: 0 | rate: / Reply Quote | |
Did you read my previous post? | |
ID: 54658 | Rating: 0 | rate: / Reply Quote | |
The reason that Maxwell and later are not directly overclockable is because Nvidia has never released signed firmware images for the cards. Re-Clocking There have been some hints from Nvidia that signed firmware images are coming eventually to the Nouveau driver for Pascal and later. | |
ID: 54661 | Rating: 0 | rate: / Reply Quote | |
Did you read my previous post? You can’t force a high end GTX 10-series card into P0. Only the professional level Quadro and Tesla line cards, and low end cards like 1050s and lower. There was a way to do it on 700 series cards and maybe 900 series cards in Windows, but not Linux if I recall.Yes but it still reported being in P0 for a 1080 Ti. I just can't get it to work. Here's what I did: sudo nvidia-xconfig -a --cool-bits=28 --allow-empty-initial-configuration Section "Device"sudo xed /etc/X11/xorg.conf Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce GTX 1080 Ti" EndSection Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 Option "AllowEmptyInitialConfiguration" "True" Option "Coolbits" "28" SubSection "Display" Depth 24 EndSubSection EndSection Then I made an executable script: #!/bin/bash With nvidia-smi -q reporting:/usr/bin/nvidia-smi -pm 1 /usr/bin/nvidia-smi -acp UNRESTRICTED /usr/bin/nvidia-smi -i 0 -pl 160 /usr/bin/nvidia-settings -a "[gpu:0]/GPUPowerMizerMode=1" /usr/bin/nvidia-settings -a "[gpu:0]/GPUMemoryTransferRateOffset[3]=400" -a "[gpu:0]/GPUGraphicsClockOffset[3]=100" /usr/bin/nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUTargetFanSpeed=75" -a "[fan:1]/GPUTargetFanSpeed=80" Attached GPUs : 1 GPU 00000000:02:00.0 Product Name : GeForce GTX 1080 Ti Product Brand : GeForce Display Mode : Enabled Display Active : Enabled Persistence Mode : Disabled Fan Speed : 75 % Performance State : P2 Power Readings Power Management : Supported Power Draw : 57.57 W Power Limit : 250.00 W Default Power Limit : 250.00 W Enforced Power Limit : 250.00 W Min Power Limit : 125.00 W Max Power Limit : 300.00 W Clocks Graphics : 1556 MHz SM : 1556 MHz Memory : 5200 MHz Video : 1316 MHz Applications Clocks Graphics : N/A Memory : N/A Default Applications Clocks Graphics : N/A Memory : N/A Max Clocks Graphics : 1987 MHz SM : 1987 MHz Memory : 5505 MHz Video : 1620 MHz Max Customer Boost Clocks Graphics : N/A Clock Policy Auto Boost : N/A Auto Boost Default : N/A Processes Process ID : 1447 Type : G Name : /usr/lib/xorg/Xorg Used GPU Memory : 123 MiB | |
ID: 54667 | Rating: 0 | rate: / Reply Quote | |
Did you read my previous post? You can’t force a high end GTX 10-series card into P0. Only the professional level Quadro and Tesla line cards, and low end cards like 1050s and lower. There was a way to do it on 700 series cards and maybe 900 series cards in Windows, but not Linux if I recall.Yes but it still reported being in P0 for a 1080 Ti. I just can't get it to work. Is it P0 or P2 then? | |
ID: 54668 | Rating: 0 | rate: / Reply Quote | |
I fixed it, forgot the sudo in my Startup Aps command: sudo /home/aurum/BOINC_PL.sh Persistence Mode : Enabled Fan Speed : 79 % Performance State : P2 Power Readings Power Management : Supported Power Draw : 57.76 W Power Limit : 160.00 W Default Power Limit : 250.00 W Enforced Power Limit : 160.00 W Min Power Limit : 125.00 W Max Power Limit : 300.00 W Clocks Graphics : 1556 MHz SM : 1556 MHz Memory : 5200 MHz Video : 1316 MHz Max Clocks Graphics : 1987 MHz SM : 1987 MHz Memory : 5505 MHz Video : 1620 MHz I don't know how it got set to P0 this morning but it was. | |
ID: 54669 | Rating: 0 | rate: / Reply Quote | |
I don't know how it got set to P0 this morning but it was.When the calculation starts, there's a spike (<1sec) of P0, then the card switches to P2. | |
ID: 54670 | Rating: 0 | rate: / Reply Quote | |
That must be it since I immediately ran the nvidia-smi -q query. | |
ID: 54671 | Rating: 0 | rate: / Reply Quote | |
Yes, every time the card unloads a compute task, the driver lets the card go back to P0 power state. If you have applied a core and memory overclock to the lower P2 state to approximate the normal P0 power state under a compute load, the overclocks get applied briefly to the P0 state and can sometimes crash the card if the overclocks are a bit much. | |
ID: 54672 | Rating: 0 | rate: / Reply Quote | |
Message boards : Graphics cards (GPUs) : Guide: RTX (also GTX), increasing efficiency in Linux