Posts Tagged ‘P0 power state


There is a little trick that can help you get some extra hashrate out of your Nvidia GPU when mining Ethereum or another more memory dependent algorithm, though it will most likely not affect many of the other crypto algorithms. By default when running Compute applications on your GPU it does not go to the highest Power State of the card, meaning that you might not be able to squeeze the maximum performance out of the video card and that is without overclocking anything. Thanks to the Nvidia System Management Interface (nvidia-smi) command line utility you are able to force the GPU to work in P0 state (the highest power state) instead of staying at maximum P2 when running a Compute applications such as a crypto miner software. Do note that this specific lower maximum power state is only for Compute applications, so it is not needed, not it should affect gaming performance where the GPU shuld go up to P0 power state if the conditions allow it.

The nvidia-smi utility is part of the video drivers and you can find it installed in the folder “C:\Program Files\NVIDIA Corporation\NVSMI\” on Windows, so you need to run the command line (cmd) and navigate to that folder in order to be able to issue commands. What you should start with is running the following command to check the current P-state of your GPU(s):

nvidia-smi -q -d PERFORMANCE

Do note that the P-state changes dynamically, so you need to be running Ethminer or another application when you issue the above command to see the power state active under load, otherwise you might see a lower power state being active if the GPU is idle.


After you verify the maximum power state that your Nvidia GPUs use when executing Compute applications such as ones that rely on OpenCL or CUDA you need to check what are the maximum frequencies of the video card that are available for the maximum performance in the P0 power state. You can do so with the following command (make sure you are still in the NVSMI folder):

nvidia-smi -q -d SUPPORTED_CLOCKS | more

The above will list all of the supported frequencies in the different power states that your video card can use, but there is no need to check the complete list. All we need to note are the frequencies at the top of the list for the Memory and the Graphics, in this example we are using GTX 970 video card from Gigabyte and the values we need are 3505 MHz for the VRAM and 1455 MHz for the GPU. We’ll need these frequencies for the next step.


What we are going to do next is to force the video card to use the maximum performance operating frequencies by going to the P0 power state. In order to do that we need to run the following command:

nvidia-smi -ac 3505,1455

Note that the above command will apply the settings to all GPUs that you have in your system, normally that should not be a problem for most mining rigs as they are usually with a number of cards that are the same model, but there are cases when this is not true. So you might need to check the individual settings fro different video cards and apply the correct parameters for each of them separately. To do so you just need to add the card ID in the command line, so that the particular option will be executed only for the specified video card. This is being done by adding the “-i ” parameter to the command line where can be a number starting from 0 for the first GPU and so on. In the example shown on the screenshot above we have two different GPUs in the system, so wee need to set their P0 power states with two separate commands identifying each of the card separately:

nvidia-smi -i 0 -ac 3505,1455
nvidia-smi -i 1 -ac 3505,1392

The question that undoubtedly comes now is how we have increased the performance for mining Ethereum by following the instructions above. Well it is pretty easy to check by running a benchmark with Ethminer, or just running the miner and noting the new increased frequencies that you should now have and compare them to the ones you previously had. On the Nvidia Gigabyte GTX 970 WF3OC video card used in the guide we are normally getting about 17.31 MHS in terms of hashrate mining Ethereum when the GPU is maxing out at the P2 power state, when we force it to go to the P0 power state the hashrate increases to about 19.98 MHS. So this is a nice improvement in terms of performance that comes at a cost of just about 10W higher power usage from the video card. Do note however that while this will work with Ethereum for increasing performance due to the heavy usage of video memory in the mining process, doing it may not bring performance improvement in many other commonly used mining algorithms.