Powerstates are weird in Linux; usually don't change if you issue the command to change them. I suspect this particular driver disallows nvidia-settings control over them.
Also you will need to use a higher OC offset to match the results from windows; as the OC curve is different in linux.
It seems like the power state will not change if the miner is running since the value is locked while in use by the miner, probably because the xserver p-state setting is initialized when linux loads but the miner changes the p-state settings after that which resets the values overriding the o/s default settings. Once that's done, you have to stop the miner, reset the p-state in nvidia config panel and then run the miner again... but the problem is that oneBash changes the setting back when it loads. I've tested setting the cards individually to 'prefer max performance' in nvidia's control panel while miner is running. P-state doesn't change. As soon as the miner, is closed the p-state will go up to max settings as you'd expect.
One way I think you could avoid this is by not setting power states in oneBash, but rather set them manually in the nvidia xserver settings so they are in place before oneBash runs. I'm sure there's a way to automate the P-state through nvidia xserver config file, but I'd have to dig around to find out how precisely to do it. That also means you'd have to remove the p-state config from the oneBash options to avoid it being changed back by the miner script.
In my tests different GPUs had different levels of responsiveness to the power state cmds. Maybe the new driver will work better overall.
There is no explict power state implementation in oneBash; if it is changed it is due to internal workings of the nvidia api when either OC or powerlimit is applied. It is possible that adding power state cmds before the launching of the mining client, but after the powerlimit and OC will work.
How tricky would it be to use the nvidia-settings commands from within oneBash to run the following command recursively for each card that's detected when it runs, rather than setting a specific power limit or clock offset?
Enable PowerMizer (Prefer Maximum Performance)
nvidia-settings -a '[gpu:0]/GPUPowerMizerMode=1'
essentially this, but with more efficient code because I never was good at foreach loops and such...
if [ $POWERLIMIT == "NO" ]
then
sudo nvidia-settings -a '[gpu:0]/GPUPowerMizerMode=1'
sudo nvidia-settings -a '[gpu:1]/GPUPowerMizerMode=1'
sudo nvidia-settings -a '[gpu:2]/GPUPowerMizerMode=1'
sudo nvidia-settings -a '[gpu:3]/GPUPowerMizerMode=1'
sudo nvidia-settings -a '[gpu:4]/GPUPowerMizerMode=1'
sudo nvidia-settings -a '[gpu:5]/GPUPowerMizerMode=1'
fi
On a side note, I updated to the most recent nvidia open source drivers (v. 381) and now my 1080 ti is recognized, so that's a plus. Before it just listed as 'graphical device'