I’ve got an somewhat old computer here and decided to use it as a dedicated console for an amateur CNC. It has an GeForce GT 240 card, which uses the 340 drivers.
And I’ve got the same problem. Whatever PowerMiser setting I set, it always uses level 1 (405MHz GPU, 648 MHz memory rate, 810 MHz processor clock).
Level 2 (550/3400/1340MHz) and Level 0 are both grayed out and will be never selected.
Card specs suggest that those clocks are achievable on this card.
Performance is sluggish even in simple CAD-like programs (QCad, dxf2gcode etc). That’s not what I would expect from a card of such a level. I think that’s because driver does not use all its capabilities.
I’ve tried the suggestions above but they do not help.
I can successfully change GPUPowerMizerMode to 1 via command-line or via nvidia-settings GUI, but that does not affect anything. Current frequency (as seen in GPUCurrentClockFreqs below) is still 405MHz
Here are the relevant settings:
# nvidia-settings -q all | egrep -i '(Perf|Power|Freq)'
Attribute 'GPU2DClockFreqs' (zap.lan:0[gpu:0]): 135,135.
Attribute 'GPU3DClockFreqs' (zap.lan:0[gpu:0]): 550,1700.
Attribute 'GPUDefault2DClockFreqs' (zap.lan:0[gpu:0]): 135,135.
Attribute 'GPUDefault3DClockFreqs' (zap.lan:0[gpu:0]): 550,1700.
Attribute 'GPUCurrentClockFreqs' (zap.lan:0[gpu:0]): 405,324.
Attribute 'GPUCurrentProcessorClockFreqs' (zap.lan:0[gpu:0]): 810.
Attribute 'GPUPowerSource' (zap.lan:0[gpu:0]): 0.
Attribute 'GPUCurrentPerfLevel' (zap.lan:0[gpu:0]): 1.
Attribute 'GPUAdaptiveClockState' (zap.lan:0[gpu:0]): 1.
Attribute 'GPUPowerMizerMode' (zap.lan:0[gpu:0]): 1.
Attribute 'GPUPowerMizerDefaultMode' (zap.lan:0[gpu:0]): 0.
Attribute 'GPUCurrentClockFreqsString' (zap.lan:0[gpu:0]): nvclock=405, nvclockmin=405,
nvclockmax=405, nvclockeditable=0, memclock=324, memclockmin=324, memclockmax=324, memclockeditable=0,
memTransferRate=648, memTransferRatemin=648, memTransferRatemax=648, memTransferRateeditable=0,
processorclock=810, processorclockmin=810, processorclockmax=810, processorclockeditable=0
Attribute 'GPUPerfModes' (zap.lan:0[gpu:0]): perf=0, nvclock=135, nvclockmin=135, nvclockmax=135,
nvclockeditable=0, memclock=135, memclockmin=135, memclockmax=135, memclockeditable=0,
memTransferRate=270, memTransferRatemin=270, memTransferRatemax=270, memTransferRateeditable=0,
processorclock=270, processorclockmin=270, processorclockmax=270, processorclockeditable=0 ; perf=1,
nvclock=405, nvclockmin=405, nvclockmax=405, nvclockeditable=0, memclock=324, memclockmin=324,
memclockmax=324, memclockeditable=0, memTransferRate=648, memTransferRatemin=648,
memTransferRatemax=648, memTransferRateeditable=0, processorclock=810, processorclockmin=810,
processorclockmax=810, processorclockeditable=0 ; perf=2, nvclock=550, nvclockmin=550, nvclockmax=550,
nvclockeditable=0, memclock=1700, memclockmin=1700, memclockmax=1700, memclockeditable=0,
memTransferRate=3400, memTransferRatemin=3400, memTransferRatemax=3400, memTransferRateeditable=0,
processorclock=1340, processorclockmin=1340, processorclockmax=1340, processorclockeditable=0
How can I enforce the max performance level? Using adaptive performance is a bad option for CAD-like programs, because most of the time it exercices little pressure on automatic performance selection algorithm (while keyboard/mouse is idle) but when I scroll or edit something I want it to be as responsive as possible.