[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