[Hardware] EeePC 1000H, acpi, powersaved, etc
Denis G. Samsonenko
=?iso-8859-1?q?d=2Eg=2Esamsonenko_=CE=C1_gmail=2Ecom?=
Пт Ноя 14 11:50:11 MSK 2008
Привет!
13 ноября 2008 г. 21:39 Kharitonov A. Dmitry написал:
>> При этом процесс /bin/sh /etc/acpi/eeepc_900-video.sh отъедает 33%
>> процессора.
>> Если его прибить, то реакция на кнопки возвращается.
>> Видимо что-то в этом скрипте, что он не может завершиться, поедая при
>> этом процессорное время.
>
> пришлите вывод
> /bin/sh -xv /etc/acpi/eeepc_900-video.sh
> Там вроде не чему тормозить.
# /bin/sh -xv /etc/acpi/eeepc_900-video.sh
#!/bin/sh
#eeepc_900-video.sh
var="videomode"
+ var=videomode
modes=(
"1024x600 off"
"800x600 800x600"
"1024x600 1024x600"
"1024x768 1024x768"
"off 1024x768"
)
+ modes=("1024x600 off" "800x600 800x600" "1024x600 1024x600"
"1024x768 1024x768" "off 1024x768")
mode=$(${0%${0##*/}}eeepc_900-acpidata.sh "$var")
${0%${0##*/}}eeepc_900-acpidata.sh "$var"
++ /etc/acpi/eeepc_900-acpidata.sh videomode
+ mode=0
STATUS=$(/usr/bin/xrandr -q | /bin/sed
'/VGA/!D;s/^[[:space:]]\+//;s/VGA[[:space:]]//;s/[[:space:]].\+//')
/usr/bin/xrandr -q | /bin/sed
'/VGA/!D;s/^[[:space:]]\+//;s/VGA[[:space:]]//;s/[[:space:]].\+//'
++ /usr/bin/xrandr -q
++ /bin/sed '/VGA/!D;s/^[[:space:]]\+//;s/VGA[[:space:]]//;s/[[:space:]].\+//'
+ STATUS=disconnected
modedone=0
+ modedone=0
while [ "$modedone" == 0 ]; do
[ -z "$mode" ] && mode=0
(( mode<0 )) && mode=0
(( mode>${#modes[@]}-2 )) && mode=-1
(( mode++ ))
modev=${modes[mode]}
[ ${modev##*[[:space:]]} != "off" -a "$STATUS" == "disconnected" ]
&& continue;
if [ ${modev%%[[:space:]]*} == "off" ]; then
/usr/bin/xrandr --output LVDS --off
else
/usr/bin/xrandr --output LVDS --mode ${modev%%[[:space:]]*} || continue
fi
if [ ${modev##*[[:space:]]} == "off" ]; then
/usr/bin/xrandr --output VGA --off
else
/usr/bin/xrandr --output VGA --mode ${modev##*[[:space:]]} || continue
fi
modedone=1
done
+ '[' 0 == 0 ']'
+ '[' -z 0 ']'
+ (( mode<0 ))
+ (( mode>5-2 ))
+ (( mode++ ))
+ modev='800x600 800x600'
+ '[' 800x600 '!=' off -a disconnected == disconnected ']'
+ continue
+ '[' 0 == 0 ']'
+ '[' -z 1 ']'
+ (( mode<0 ))
+ (( mode>5-2 ))
+ (( mode++ ))
+ modev='1024x600 1024x600'
+ '[' 1024x600 '!=' off -a disconnected == disconnected ']'
+ continue
+ '[' 0 == 0 ']'
+ '[' -z 2 ']'
+ (( mode<0 ))
+ (( mode>5-2 ))
+ (( mode++ ))
+ modev='1024x768 1024x768'
+ '[' 1024x768 '!=' off -a disconnected == disconnected ']'
+ continue
+ '[' 0 == 0 ']'
+ '[' -z 3 ']'
+ (( mode<0 ))
+ (( mode>5-2 ))
+ (( mode++ ))
+ modev='off 1024x768'
+ '[' 1024x768 '!=' off -a disconnected == disconnected ']'
+ continue
+ '[' 0 == 0 ']'
+ '[' -z 4 ']'
+ (( mode<0 ))
+ (( mode>5-2 ))
+ mode=-1
+ (( mode++ ))
+ modev='1024x600 off'
+ '[' off '!=' off -a disconnected == disconnected ']'
+ '[' 1024x600 == off ']'
+ /usr/bin/xrandr --output LVDS --mode 1024x600
+ '[' off == off ']'
+ /usr/bin/xrandr --output VGA --off
+ modedone=1
+ '[' 1 == 0 ']'
${0%${0##*/}}eeepc_900-acpidata.sh "$var" "$mode"
+ /etc/acpi/eeepc_900-acpidata.sh videomode 0
В таком режиме скрипт завершается сам и процессор не кушает.
> Вообще-то он яркость старается для каждого режима запомнить. Если
> запомненной яркости не находит -- выставляет по умолчанию 20%.
Как-то я не понял в какой момент он его сохраняет. Потому как сейчас
перехожу на любой из двух режимов -- яркость ставит на 100%. Убираю
яркость, переключаю на другой режим -- яркость уходит в 100%. Опять
убираю, переключаю режим назад -- яркость опять в 100%. Когда он
значение яркости запоминает?
>> Я думаю, что должны быть 3 профиля:
>> 1) производительность (частота по максимуму, яркость 100%);
>> 2) динамический (частота меняется в зависимости от нагрузки, яркость 60%);
>
> частота 0% -- 100% ?
Ну, у меня получается 800--1600МГц.
>> 3) экономичный (частота по минимуму, яркость 40%);
> частота 0 -- 600 МГц
У меня похоже минимум 800МГц, ниже не опускается.
>> И ещё один профиль, на который нельзя будет переключиться в ручную (но
>> с которого можно будет переключиться на любой из выше перечисленных):
>>
>> 4) критический (частота по минимуму, яркость 10%) -- переходить в этот
>> профиль автоматически при низком уровне заряда батареи (при работе от
>> батарейки конечно).
>
> Частота 0 -- 300 МГц
см. выше
> Автоматом, если разряд батареи < 7% запускается suspend на диск.
угу
> Надо обязательно добиться вывода информационного окна.
> Вставьте в скрипте в начале строчку
> DISPLAY=:0
> Это должно помочь
> Иначе, если не выводить на экран название профиля, трудно будет понять, что
> включилось.
В какой из них?
--
Всего доброго,
Денис.
Подробная информация о списке рассылки Hardware