AC 어댑터에서 노트북을 분리하면 다음과 같은 ACPI 오류가 발생합니다.
May 07 21:45:04 veritas root[7067]: ACPI group/action undefined: processor / LNXCPU:00
May 07 21:45:04 veritas root[7076]: ACPI group/action undefined: processor / LNXCPU:01
May 07 21:45:04 veritas root[7078]: ACPI group/action undefined: processor / LNXCPU:02
May 07 21:45:04 veritas root[7080]: ACPI group/action undefined: processor / LNXCPU:03
acpi_listen
덤프
ac_adapter ACPI0003:00 00000080 00000000
battery PNP0C0A:00 00000080 00000001
processor LNXCPU:00 00000080 00000015
processor LNXCPU:01 00000080 00000015
processor LNXCPU:02 00000080 00000015
processor LNXCPU:03 00000080 00000015
processor LNXCPU:00 00000081 00000000
processor LNXCPU:01 00000081 00000000
processor LNXCPU:02 00000081 00000000
processor LNXCPU:03 00000081 00000000
...
processor LNXCPU:00 00000080 00000000
processor LNXCPU:01 00000080 00000000
processor LNXCPU:02 00000080 00000000
processor LNXCPU:03 00000080 00000000
/etc/acpi/handler.sh
프로세서/LNXCPU 이벤트가 처리되지 않는 것 같습니다...
#!/bin/bash
# Default acpi script that takes an entry for all actions
case "$1" in
button/power)
case "$2" in
PBTN|PWRF)
logger 'PowerButton pressed'
;;
*)
logger "ACPI action undefined: $2"
;;
esac
;;
button/sleep)
case "$2" in
SLPB|SBTN)
logger 'SleepButton pressed'
;;
*)
logger "ACPI action undefined: $2"
;;
esac
;;
ac_adapter)
case "$2" in
AC|ACAD|ADP0)
case "$4" in
00000000)
logger 'AC unpluged'
;;
00000001)
logger 'AC pluged'
;;
esac
;;
*)
logger "ACPI action undefined: $2"
;;
esac
;;
battery)
case "$2" in
BAT0)
case "$4" in
00000000)
logger 'Battery online'
;;
00000001)
logger 'Battery offline'
;;
esac
;;
CPU0)
;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
button/lid)
case "$3" in
close)
logger 'LID closed'
;;
open)
logger 'LID opened'
;;
*)
logger "ACPI action undefined: $3"
;;
esac
;;
*)
logger "ACPI group/action undefined: $1 / $2"
;;
esac
더 나쁜 것은 심각한 성능 문제에 직면하게 된다는 것입니다. (모든 것이 지연됩니다!) 프로세서/LNXCPU의 반복적인 시도 때문인 것 같습니다. 성능 문제는 정의되지 않은 ACPI 작업 오류와 밀접한 관련이 있기 때문에 재부팅하면 성능이 다시 정상으로 돌아옵니다.
그런데 원인이 뭔지 알 수가 없네요... cpupower
CPU 모드(절전 또는 성능)를 제어하고 을 비활성화 해 보았 tlp
으나 소용이 없었습니다.
어떻게 이런일이 일어 났습니까? 이 문제의 원인은 무엇입니까? 더 중요한 것은 이 문제를 어떻게 해결합니까? 매우 감사합니다!
후속 조치: CPU 주파수가 400MHz(성능 모드 선택이 작동하지 않음)인데 다시 시작하면 800MHz(성능 모드 선택 주파수는 2.8GHz)가 되는 것을 확인했습니다.
답변1
AC 어댑터에서 노트북을 분리하면 다음과 같은 ACPI 오류가 발생합니다.
제안사항: "ACPI AC 어댑터 플러그/플러그 해제가 인식되지 않습니다.".
rzepaczyk - 내 handler.sh:
# Default acpi script that takes an entry for all actions
minspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq`
maxspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq`
setspeed1="/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed"
setspeed2="/sys/devices/system/cpu/cpu1/cpufreq/scaling_setspeed"
setspeed3="/sys/devices/system/cpu/cpu2/cpufreq/scaling_setspeed"
setspeed4="/sys/devices/system/cpu/cpu3/cpufreq/scaling_setspeed"
set $*
case "$1" in
button/power)
#echo "PowerButton pressed!">/dev/tty5
case "$2" in
PBTN|PWRF) logger "PowerButton pressed: $2" ;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
button/sleep)
case "$2" in
SLPB) echo -n mem >/sys/power/state ;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
ac_adapter)
case "$2" in
AC*|ACAD*|ADP0*|AD*)
case "$4" in
00000000)
echo -n $minspeed >$setspeed1
echo -n $minspeed >$setspeed2
echo -n $minspeed >$setspeed3
echo -n $minspeed >$setspeed4
#/etc/laptop-mode/laptop-mode start
;;
00000001)
echo -n $maxspeed >$setspeed1
echo -n $maxspeed >$setspeed2
echo -n $maxspeed >$setspeed3
echo -n $maxspeed >$setspeed4
#/etc/laptop-mode/laptop-mode stop
;;
esac
;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
battery)
case "$2" in
BAT0)
case "$4" in
00000000) #echo "offline" >/dev/tty5
;;
00000001) #echo "online" >/dev/tty5
;;
esac
;;
CPU0)
;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
button/lid)
case "$3" in
close)
#echo "LID closed!">/dev/tty5
;;
open)
#echo "LID opened!">/dev/tty5
;;
esac
;;
*)
logger "ACPI group/action undefined: $1 / $2"
;;
esac
내가 원하는 것은 어댑터가 연결되어 있을 때 CPU 조정기를 ondemand로 설정하고 어댑터가 연결되지 않을 때 절전으로 설정하는 것입니다. 작업이 정의되지 않은 것으로 확인되었으므로 acpi가 작업을 인식하지 못한다고 가정합니다.
ac_adapter)
case "$2" in
AC*|ACAD*|ADP0*|AD*)
)
handler.sh의 항목.
Raynman - 처리된 것 같습니다. 로그에 표시된 정의되지 않은 이벤트 외에도 acpi_listen은 ac_adapter 이벤트도 표시합니다. 이는 마지막 견적의 사례에 의해 처리됩니다. 그런 다음 $4에 삽입(00000001)과 연결 해제(00000000)를 구별하는 또 다른 사례 설명이 있습니다. cpufreq-set(또는 생각할 수 있는 다른 것)을 호출하여 이러한 echo 문을 대체하면 제대로 작동할 것입니다.
rzepaczyk - 작동합니다. 도움을 주셔서 감사합니다.