cpufreq-userspace-scaler.service Fail 뜨시는 분 참고 하세요.
메인보드 : ASUS 320i-K
CPU : AMD Ryzen 5 PRO 4650G with Radeon Graphics
부트로드 : Mshell - 923+ 7.1 native
cpufreq-userspace-scaler.service 가 아래의 이유로 FAIL 나서
cat: /sys/bus/platform/devices/coretemp.0/hwmon/hwmon0/temp1_input: No such file or directory
AMD cpu의 경우 온도의 정보가 위의 파일로 나타나지 않는 것 같습니다.
다음과 같이 처리 했습니다.
ssh 로그인 해서 sudo -i 로 root 로 로그인 하고
systemctl status cpufreq-userspace-scaler.service 명령으로 보면
/etc/systemd/system/cpufreq-userspace-scaler.service
이 파일의 내요으로 서비스 시작하는데
위 파일의 내용중 실행 파일을
ExecStart=/usr/sbin/scaler.sh 을 사용하는 것을 알수 있습니다.
/usr/sbin/scaler.sh 파일중 온도 참고 하는곳과 몇가시 수정하여 실행시 에러 나지 않도록 변경 합니다.
수정(주석처리함)된 부분은 아래와 같습니다.
...
# Get current and max cpu temps
# currtemp=$(cat /sys/bus/platform/devices/coretemp.0/hwmon/hwmon0/temp1_input)
# maxtemp=$(cat /sys/bus/platform/devices/coretemp.0/hwmon/hwmon0/temp1_max)
....
# coolfreq=${freqlist[3]}
...
# if [ "$currtemp" -lt "$maxtemp" ]; then
for i in $(seq 0 "${cpucorecount}"); do
if [ "$loadavg" -le $((10#$lowload)) ]; then
echo "$minfreq" >/sys/devices/system/cpu/cpu"${i}"/cpufreq/scaling_setspeed
elif [ "$loadavg" -ge $((10#$lowload)) ] && [ "$loadavg" -le $((10#$midload)) ]; then
echo "$midfreq" >/sys/devices/system/cpu/cpu"${i}"/cpufreq/scaling_setspeed
elif [ "$loadavg" -ge $((10#$midload)) ]; then
echo "$maxfreq" >/sys/devices/system/cpu/cpu"${i}"/cpufreq/scaling_setspeed
fi
done
# else
# for i in $(seq 0 "${cpucorecount}"); do
# echo "$coolfreq" >/sys/devices/system/cpu/cpu"${i}"/cpufreq/scaling_setspeed
# done
# sleep 30
# fi
와 같이 수정합니다. 온도가 높을때 coolfreq로 동작하라는 곳만 disable 되었는데 이건 문제가 없을 것으로 판단됩니다.
왜냐면 fail 나면 항상 최고 속도로 도는 것이기 때문에 더 열악한 상황입니다.
저장하고
systemctl restart cpufreq-userspace-scaler.service
후
systemctl status cpufreq-userspace-scaler.service
명령으로 보면.
● cpufreq-userspace-scaler.service - ACPI cpufreq userspace scaler
Loaded: loaded (/etc/systemd/system/cpufreq-userspace-scaler.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2023-06-27 15:56:50 KST; 8min ago
Main PID: 16288 (scaler.sh)
Memory: 1.1M
CGroup: /system.slice/cpufreq-userspace-scaler.service
├─14517 sleep 0.5
└─16288 /bin/bash /usr/sbin/scaler.sh
Jun 27 15:56:50 Jeons systemd[1]: Started ACPI cpufreq userspace scaler.
Jun 27 15:56:50 Jeons systemd[1]: Starting ACPI cpufreq userspace scaler...
와 같이 잘 동작 합니다.
문제는 재부팅시 다시 FAIL 이 나 있길래 살펴 봤더니
/usr/sbin/scaler.sh 이 파일이 원복 되어 있습니다.
이건 addon 모듈이 재부팅 하면서 다시 원래 걸로 덮어 써 버리는 것 같은데 어디에 그런 행동을 하는지 찾다가 포기 하고.
그냥 제어판 > 작업 스케쥴러에 /usr/sbin/scaler.sh 파일을 올바른 파일로 덮어 쓰게 하고
cpufreq-userspace-scaler.service 재시작 하는 스크립터를 부팅시 실행하게 해 놓았습니다.
부팅 사용쟈 스크립터는 아래와 같습니다. (root로 해주세요)
참고로 /usr/local/bin/scaler.sh 에 정삭적으로 동작하는 수정된 scaler.sh 파일을 미리 복사해 놓습니다.
rm /usr/sbin/scaler.sh
cp /usr/local/bin/scaler.sh /usr/sbin/
/bin/systemctl stop cpufreq-userspace-scaler.service
sleep 1s
/bin/systemctl start cpufreq-userspace-scaler.service
위와 같이 해 놓으니 재부팅 해도 문제 없이 적용 됩니다.
해놀 초보라 이것 저것 해보면서 상당히 많은 어려움을 겪고 있지만 많은 도움 받고 있습니다.
감사합니다.
AMD / INTEL CPU 를 분기해서 2가지로직으로 수정하겠습니다.
이렇게 주석을 하셔도 재부팅하면 소스는 재설치가 되기 때문에 원복되실겁니다.
AMD 용으로 보완된 ADDON 배포 완료된 후 다시 알려드리겠습니다.
수정배포 되었습니다.
https://github.com/PeterSuh-Q3/tcrp-addons/blob/main/cpufreq-scaler/src/scaler.sh
제가 시험한 AMD CPU는 너무 구형(AMD G-T44R) 이라서 가용주파주 종류가 2개 밖에 나오지 않습니다.
일단 4가지 이상 가용주파수가 있는 라이젠에서는 문제 없을것 같습니다.
테스트좀 부탁드리겠습니다.
로더는 다시 빌드하셔야 합니다.
가용주파수가 최대 몇개까지 나오는지 카운트해서 다시 조정하는 스크립트로 이따 저녁에 한번더 보완하겠습니다.
DSM PAT file pre-downloading 후 sha256sum verification 오류가 발생합니다.
얼마전까지 문제 없이 빌드 되었는데..
이 이후에는 제대로 빌드가 되지 않아 진행이 안됩니다. ㅠ.ㅠ;;
염치 없이 도움 부탁 드립니다.
cmt alert