手上有一張 RTX 3090 的公板卡,因為有 24GB 的 VRAM,所以儘管效率不算挺優,它還是常時插在公司的工作機上運作。

有個問題一直困擾著。它在 Windows 11 環境,很常遇到網頁需要硬體加速、或是 Blender 滿載時出錯,出錯方式百花齊放,而且通常就無法再正常進入 OS 了,需要跑個幾次系統修復才行。但是完全相同的硬體平台,切換到 Ubuntu 就沒事,目前原因尚不明。

就算不一定是顯示卡本身壞了,它仍然是造成問題的主要變因。若真得在 Windows 下運作,就得把時脈或電壓調低,才能換來較穩定的運作。

改電壓還是鎖時脈?作法跟效果都有差

原本也把降壓和鎖時脈當成差不多的事,實際下手才發現差很多。真正的降壓,是用 MSI Afterburner 之類的工具打開 V/F Curve,指定某個電壓要跑多少 MHz,再把右側曲線壓平。這樣可以收掉 RTX 3090 最耗電的那一段,同時留下大部分效能。麻煩的是,每一張卡能用的曲線都不一樣,而且開得了機不代表穩。Blender 能跑,不等於瀏覽器打開硬體加速不會出錯。

鎖時脈單純很多。不碰電壓曲線,只規定核心最高能跑到哪裡、GPU Boost 不准再往上衝,效能一定會少一點,功耗和溫度也會一起下來。Power Limit 又是另一回事,它限制的是整張卡能吃多少瓦,碰到上限後由驅動自己降頻,實際時脈還是會飄。要查是不是高時脈造成不穩,直接鎖時脈會是最短路徑。

用 NVIDIA 官方工具就能改,記得開機要自動鎖定

最簡單的作法,還是用 NVIDIA 官方工具:nvidia-smi 。它會跟著 NVIDIA 驅動一起安裝,不必再裝一套常駐調校軟體。

驅動裝好後,先用系統管理員身分開 PowerShell,看看顯示卡編號、目前時脈和最高時脈:

nvidia-smi --query-gpu=index,name,clocks.current.sm,clocks.max.sm,power.draw,power.limit,temperature.gpu --format=csv

比如要把 RTX 3090 的核心時脈上限壓到 1500 MHz,會是這樣做:

(下面的 0 是第一張顯示卡,210,1500 是允許的最低和最高核心時脈)

nvidia-smi -i 0 -lgc 210,1500

1500 MHz 只是第一輪。先跑會讓這台電腦出錯的東西,瀏覽器硬體加速、影片播放、Blender 算圖和閒置後重新滿載都要跑。穩定後每次往上加 30 或 50 MHz,直到錯誤再出現,再退回上一檔。測試時再另外開一個 PowerShell,每秒看一次核心時脈、功耗、溫度和使用率:

nvidia-smi --query-gpu=timestamp,clocks.current.sm,clocks.max.sm,power.draw,temperature.gpu,utilization.gpu --format=csv -l 1

跑完若都沒問題,要解除鎖定也很簡單:

nvidia-smi -i 0 -rgc

如果測試的結果是:真的要降時脈跑才會穩,那麼就要在開機時把時脈壓住,把下面這段存成 C:\Tools\gpu-clock-cap.ps1

$NvidiaSmi = (Get-Command nvidia-smi.exe -ErrorAction Stop).Source
$Result = & $NvidiaSmi -i 0 -lgc 210,1500 2>&1
$Result | Set-Content -Path 'C:\ProgramData\gpu-clock-cap.log'
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

& $NvidiaSmi -i 0 `
  --query-gpu=timestamp,name,clocks.current.sm,clocks.max.sm,power.draw,temperature.gpu `
  --format=csv | Add-Content -Path 'C:\ProgramData\gpu-clock-cap.log'

再用系統管理員 PowerShell 建立開機工作。延遲 30 秒是等驅動先載入,工作用 SYSTEM 身分執行,不受使用者有沒有登入影響。

schtasks.exe /Create /TN "NVIDIA Clock Cap" /SC ONSTART /DELAY 0000:30 `
  /RU SYSTEM /RL HIGHEST `
  /TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\Tools\gpu-clock-cap.ps1" /F

當然了,顯卡有問題還是要送修。這作法只是應急,降頻跑的 RTX 3090,效能落點會不好看,不管是算 AI 或跑遊戲都一樣。不能修?那就換一張新的吧!