ilya-zlobintsev / LACT

Linux GPU Configuration Tool
MIT License
1.46k stars 35 forks source link

OC settings not being applied if fan control is used at the same time #345

Closed flippette closed 4 months ago

flippette commented 4 months ago

Checklist

Bug description

When only using the OC functionality, settings are applied as normal:

image

When fan control is also used, OC settings are suddenly no longer applying (note the memory clock dropping from 1300 to 1218MHz here):

image

I've talked about this problem already here. TL;DR, I suspect the order in which settings are written is causing the problem.

qlum on that thread doesn't seem to be able to reproduce the problem, but I consistently can, on multiple distros, distro installs, and kernels.

On my hardware, this custom script seems to work:

#!/usr/bin/env bash

CARD_ID=card1
HWMON_ID=hwmon3

PL=280
SCLK_MAX=3200
MCLK_MAX=1300
VOLT_OFF=-75
TEMP_TGT=70

GPU_SYSFS="/sys/class/drm/$CARD_ID/device"
HWMON_SYSFS="$GPU_SYSFS/hwmon/$HWMON_ID"
FANCTRL_SYSFS="$GPU_SYSFS/gpu_od/fan_ctrl"

echo "$((PL * 10**6))" > "$HWMON_SYSFS/power1_cap"

echo "s 1 $SCLK_MAX" > "$GPU_SYSFS/pp_od_clk_voltage"
echo "m 1 $MCLK_MAX" > "$GPU_SYSFS/pp_od_clk_voltage"
echo "vo $VOLT_OFF" > "$GPU_SYSFS/pp_od_clk_voltage"

echo "$TEMP_TGT" > "$FANCTRL_SYSFS/fan_target_temperature"

# commit both `pp_od_clk_voltage` and `fan_target_temperature` _AFTER_ setting everything
echo "c" | tee "$GPU_SYSFS/pp_od_clk_voltage" | tee "$FANCTRL_SYSFS/fan_target_temperature"

(yes I know this isn't an issue with LACT per se, but it'd be great to circumvent the issue now instead of having to wait for an amdgpu fix)

Debug snapshots:

OC only OC & fan control

System info

- LACT version: 0.4.5-release
- GPU model: Sapphire Nitro+ 7800 XT
- Kernel version: 6.9.6-zen1
- Distribution: NixOS 24.11 unstable
ilya-zlobintsev commented 4 months ago

Duplicate of #329, should be fixed in latest master.

flippette commented 4 months ago

I'll go ahead and close this issue then. Thank you!