Changing power management limit is not supported for GPU ( #Pascal #GTX1060 #laptop #mobile #Linux #555 #nvidia-smi #powerlimit )

I’m running Official Nvidia Proprietary Driver (555.58.02) on various Linux Distributions (Fedora, Arch, Ubuntu, Debian, OpenSUSE.)

Since the driver has updated to 535, Nvidia removed the ability to control the gpu ( frequency, voltage and power), it was working in 525.

This is very essential to my case.
My Laptop is Microsoft Surface Book 2 15" (i7-8650U, GTX1060 Mobile).

The default vBIOS setting - Power Limit is 72W.

No matter how light the program or game is (below 30% GPU utilization) , the GPU turbo up to 60W~70W (1.8GHz) which makes the GPU temp go up to 90C degree, then, it thermal throttle down to 3W (P8).

My laptop fan and cooling system is not capable to cool down the GPU at this high power setting.

I need the ability to manually set the power limit.

On Windows, the GPU frequency scaling behaves normally, won’t turbo crazy like it on Linux.

Also, I was able to control the voltage and frequency on Windows.

The Nvidia Official Linux proprietary driver does not allow you to do that.

nvidia-powerd.service only support for Ampere and up (RTX 30 series and up), GTX10, 20 series are excluded.

nvidia-smi -q -d power

==============NVSMI LOG==============

Timestamp                                 : Sat Jul  6 02:33:55 2024
Driver Version                            : 555.58.02
CUDA Version                              : 12.5

Attached GPUs                             : 1
GPU 00000000:02:00.0
    GPU Power Readings
        Power Draw                        : 2.86 W
        Current Power Limit               : 72.00 W
        Requested Power Limit             : 72.00 W
        Default Power Limit               : 72.00 W
        Min Power Limit                   : 1.00 W
        Max Power Limit                   : 72.00 W
    Power Samples
        Duration                          : Not Found
        Number of Samples                 : Not Found
        Max                               : Not Found
        Min                               : Not Found
        Avg                               : Not Found
    GPU Memory Power Readings 
        Power Draw                        : N/A
    Module Power Readings
        Power Draw                        : N/A
        Current Power Limit               : N/A
        Requested Power Limit             : N/A
        Default Power Limit               : N/A
        Min Power Limit                   : N/A
        Max Power Limit                   : N/A

❯ modinfo nvidia

filename:       /lib/modules/6.9.7-arch1-1-surface/updates/dkms/nvidia.ko.zst
alias:          char-major-195-*
version:        555.58.02
supported:      external
license:        NVIDIA
firmware:       nvidia/555.58.02/gsp_tu10x.bin
firmware:       nvidia/555.58.02/gsp_ga10x.bin
srcversion:     7CC59AD55E0DD69F0C28592
alias:          pci:v000010DEd*sv*sd*bc06sc80i00*
alias:          pci:v000010DEd*sv*sd*bc03sc02i00*
alias:          pci:v000010DEd*sv*sd*bc03sc00i00*
depends:        
retpoline:      Y
name:           nvidia
vermagic:       6.9.7-arch1-1-surface SMP preempt mod_unload 
sig_id:         PKCS#7
signer:         SB2-2023A3-A6213
sig_key:        70:A8:0C:F2:61:4B:92:72:87:F4:CB:32:9F:FC:0F:A0:4C:5D:00:37
sig_hashalgo:   sha512
signature:     (Removed)
parm:           NvSwitchRegDwords:NvSwitch regkey (charp)
parm:           NvSwitchBlacklist:NvSwitchBlacklist=uuid[,uuid...] (charp)
parm:           NVreg_ResmanDebugLevel:int
parm:           NVreg_RmLogonRC:int
parm:           NVreg_ModifyDeviceFiles:int
parm:           NVreg_DeviceFileUID:int
parm:           NVreg_DeviceFileGID:int
parm:           NVreg_DeviceFileMode:int
parm:           NVreg_InitializeSystemMemoryAllocations:int
parm:           NVreg_UsePageAttributeTable:int
parm:           NVreg_EnablePCIeGen3:int
parm:           NVreg_EnableMSI:int
parm:           NVreg_TCEBypassMode:int
parm:           NVreg_EnableStreamMemOPs:int
parm:           NVreg_RestrictProfilingToAdminUsers:int
parm:           NVreg_PreserveVideoMemoryAllocations:int
parm:           NVreg_EnableS0ixPowerManagement:int
parm:           NVreg_S0ixPowerManagementVideoMemoryThreshold:int
parm:           NVreg_DynamicPowerManagement:int
parm:           NVreg_DynamicPowerManagementVideoMemoryThreshold:int
parm:           NVreg_EnableGpuFirmware:int
parm:           NVreg_EnableGpuFirmwareLogs:int
parm:           NVreg_OpenRmEnableUnsupportedGpus:int
parm:           NVreg_EnableUserNUMAManagement:int
parm:           NVreg_MemoryPoolSize:int
parm:           NVreg_KMallocHeapMaxSize:int
parm:           NVreg_VMallocHeapMaxSize:int
parm:           NVreg_IgnoreMMIOCheck:int
parm:           NVreg_NvLinkDisable:int
parm:           NVreg_EnablePCIERelaxedOrderingMode:int
parm:           NVreg_RegisterPCIDriver:int
parm:           NVreg_EnableResizableBar:int
parm:           NVreg_EnableDbgBreakpoint:int
parm:           NVreg_EnableNonblockingOpen:int
parm:           NVreg_RegistryDwords:charp
parm:           NVreg_RegistryDwordsPerDevice:charp
parm:           NVreg_RmMsg:charp
parm:           NVreg_GpuBlacklist:charp
parm:           NVreg_TemporaryFilePath:charp
parm:           NVreg_ExcludedGpus:charp
parm:           NVreg_DmaRemapPeerMmio:int
parm:           NVreg_RmNvlinkBandwidth:charp
parm:           NVreg_ImexChannelCount:int
parm:           NVreg_CreateImexChannel0:int
parm:           rm_firmware_active:charp