GPU 性能優化筆記:RTX 5060 & HQPlayer 極致配置
針對 ArchLinux 環境與 CUDA 加速運算,旨在消除電源管理抖動,追求 $10\mu s$ 極限延遲。
1. 內核參數優化 (Kernel Parameters) -- 參考用
修改 /boot/loader/entries/audiolinux.conf,在 options 行末尾加入:
pcie_aspm=off nvidia.NVreg_RegistryDwords="PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerDefaultAC=0x1"
- pcie_aspm=off:關閉 PCIe 省電切換,避免匯流排延遲。
- PowerMizer 參數:強制 GPU 進入「最高性能」模式,防止頻率因電力調度產生抖動。
2. GPU 物理鎖定 (nvidia-smi 指令)
建議寫入開機啟動腳本,確保 GPU 頻率恆定:
# 開啟持續模式
sudo nvidia-smi -pm 1
# 鎖定核心與顯存頻率 (以 RTX 5060 為例)
sudo nvidia-smi -lgc 2460,2460
sudo nvidia-smi -lmc 7501,7501
sudo nvidia-smi -pm 1
# 鎖定核心與顯存頻率 (以 RTX 5060 為例)
sudo nvidia-smi -lgc 2460,2460
sudo nvidia-smi -lmc 7501,7501
3. 中斷親和力優化 (IRQ Affinity) -- 參考用
將 GPU 中斷鎖定在 CCD 0 (Core 0-7),避免干擾 HQPlayer 運算核心 (Core 8-15):
# 找出 GPU 中斷編號
grep nvidia /proc/interrupts
# 綁定至特定核心 (假設中斷號為 30,綁定至核心 4-5)
echo "30" | sudo tee /proc/irq/30/smp_affinity
grep nvidia /proc/interrupts
# 綁定至特定核心 (假設中斷號為 30,綁定至核心 4-5)
echo "30" | sudo tee /proc/irq/30/smp_affinity
4. HQPlayer 配置 (hqplayerd.xml)
確保 <engine> 段落包含 CUDA 調度參數:
cuda="1" gray_cuda="1" multicore="1"
5. 實時監控驗證 (進階深度診斷)
為了達成 $10\mu s$ 的目標,我們不只要看頻率,還要確認 P-State(電源狀態)與 IRQ(中斷)的穩定度:
A. 監控 P-State 與頻率鎖定
執行以下指令,確認 Perf State 是否恆定在 P0,且頻率完全沒有跳動:
watch -n 1 "nvidia-smi -q -d PERFORMANCE,CLOCK"
- 核心指標:
Performance State必須鎖死在P0。如果看到 P2、P5 或 P8,代表優化失敗。 - 頻率觀察:
Graphics與Memory頻率應與你設定的鎖定值完全一致。
B. 多維度實時流資料 (dmon)
這能同時觀察 GPU 使用率 (sm)、顯存存取 (mem)、頻率 (enc/dec) 以及功耗 (pwr):
nvidia-smi dmon -s ucpm -i 0
這對於觀察 sinc-MGa 在切換曲目或採樣率時,GPU 的瞬時反應非常有用。
C. 驗證 GPU 中斷隔離 (IRQ Affinity Check)
確保 GPU 產生的中斷只出現在你指定的 CCD 0 (Core 0-7),絕對不能滲透到運算核心 8-15:
watch -n 1 "grep nvidia /proc/interrupts"
- 檢查方式:觀察後方的核心編號欄位,數字應該只在 Core 0-7 跳動。如果 Core 8-15 的計數器在增加,代表親和力設定無效。
D. HQPlayer 專屬資源佔用 (pmon)
確認是否有其他背景程式在偷用 GPU 資源,干擾音訊運算:
nvidia-smi pmon -c 1
沒有留言:
張貼留言