2010-10-11

Ubuntu 10.10 Maverick Meerkat

сегодня обновился до 10.10
из приятностей: ядро 2.6.35, а в этом ядре наконец-то есть vgaswitcheroo!
а vgaswitcheroo, в свою очередь, позволит мне наконец под линухой переключать видеокарты! (напомню, в моем ноуте их две :))


1) проверим работоспособность vgaswitcheroo:

# lscpi -vnn | grep VGA
00:02.0 VGA compatible controller [0300]: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller [8086:2a42] (rev 07) (prog-if 00 [VGA controller])
01:00.0 VGA compatible controller [0300]: ATI Technologies Inc M92 LP [Mobility Radeon HD 4300 Series] [1002:9552] (prog-if 00 [VGA controller])
# cat /sys/kernel/debug/vgaswitcheroo/switch
0:+:Pwr:0000:00:02.0
1: :Pwr:0000:01:00.0

что мы видим:
а) две видях, интел и ати, и соответствующие id (pci bus:device)
б) vgaswitcheroo нашел обе видяхи, видяха 0 - intel, видяха 1 - ати (видно по bus:device)
в) сейчас активна интел, но электричество жрут обе :)


2) подготовимься к впереключению

напишем крохотный скриптик:
#!/bin/bash

MAGICFILE="/sys/kernel/debug/vgaswitcheroo/switch"

case $1 in
intel|integrated)
echo -n DIGD > ${MAGICFILE}
;;
ati|radeon|discreete)
echo -n DDIS > ${MAGICFILE}
;;
off)
echo -n OFF | ${MAGICFILE}
;;
*)
cat ${MAGICFILE}
;;
esac
скриптик делает очень простую штуку:
а) при запуске с параметром intel включает встроенную видяху
б) при запуске с параметром ati включает дискретную видяху
в) при запуске с параметром off выключает неактивную видяху
в) при запуске с другими параметрами выдает информацию о том какая видяха активна


3) последняя проблема. переключение работает только при остановленном X-сервере.
т.е. нужно или запускать скриптик из консольки, либо в скриптике добавить /etc/init.d/kdm stop/start до/после смены видяхи. в скрипт я эти действия не добавляю, поскольку при таком останове X-ов kde не сохраняет сессию, мне проще самому завершить сеанс, и с консольки все сделать.


4) тест

# chvt 1
# /etc/init.d/kdm stop
# vgaswitcher
0:+:Pwr:0000:00:02.0
1: :Pwr:0000:01:00.0
# vgaswitcher ati
# vgaswitcher
0: :Off:0000:00:02.0
1:+:Pwr:0000:01:00.0
# /etc/init.d/kdm start

теперь попробуем воспроизводить HD-видео :)
с интеловской видяхой воспроизведение HD было кошмаром - 100% загрузка проца и лаги.
испытаем на big_buck_bunny_720p_h264.mov:
# w | head -1
15:09:07 up 2:33, 5 users, load average: 1,56, 1,02, 1,13
# mplayer Videos/big_buck_bunny_720p_h264.mov

MPlayer 1.0rc4-4.4.5 (C) 2000-2010 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing Videos/big_buck_bunny_720p_h264.mov.
libavformat file format detected.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x1d95d70]max_analyze_duration reached
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 2: audio (aac), -aid 0, -alang eng
VIDEO: [H264] 1280x720 24bpp 24.000 fps 5146.8 kbps (628.3 kbyte/s)
Clip info:
major_brand: qt
minor_version: 537199360
compatible_brands: qt
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
==========================================================================
Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding)
AUDIO: 48000 Hz, 2 ch, s16le, 437.6 kbit/28.49% (ratio: 54700->192000)
Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...
Movie-Aspect is undefined - no prescaling applied.
VO: [xv] 1280x720 => 1280x720 Planar YV12
A: 547.0 V: 547.0 A-V: -0.000 ct: 0.022 0/ 0 31% 3% 4.4% 11 0
Exiting... (Quit)
# w | head -1
15:18:25 up 2:42, 5 users, load average: 2,15, 2,19, 2,52
по top'у процесс mplayer ест где-то 25-35% процессорного времени.
большую нагрузку на самом деле создает io :)

видео идет реально гладко, звук не отстает, прокрутка не тормозит :)
правда клавиатура ноута стает заметно теплее :)

UPDATE1: добавил функцию OFF:
root@t00l ~ # vgaswitcher
0:+:Pwr:0000:00:02.0
1: :Pwr:0000:01:00.0
root@t00l ~ # vgaswitcher off
root@t00l ~ # vgaswitcher
0:+:Pwr:0000:00:02.0
1: :Off:0000:01:00.0
после "выключения" внешней видяхи кулер заметно снижает обороты :)
при переключение выключение происходит автоматом. а вот при использовании встроенной можно ати выключить без переключений.

4 коментарі:

v0ha сказав...

Не холивара ради:а это так и задумывалось разработчиками использовать vgaswitcheroo? А то пока для домохозяек не сделают я не пересяду)

invalidCCIE сказав...

нет. он пока пре-альфа :)
обрати внимание на "debug" в имени файла :)

в конце-концов эта хрень (переключалка) будет включена где-нибудь в фичах самого Икс-сервера, и все станет более-менее ок.

п.с. под семеркой эта фича тоже офигенно работает - переключение делается системой автоматом при многих событиях acpi, причем без спросу, и никак настроить нельзя. только потом руками переключать обратно.

v0ha сказав...

Брат говорит, что у него без спросу переключается только когда между батареей и стационарным питанием переключаешься. При чем говорит, что здесь переключение не заметить невозможно - изображение на экране пару секунд бьется в конвульсиях а потом всё нормально. Но он никакого софта от Асера не ставил. Может он что-то добавляет...Готов его напрячь чтобы проверить в конкретных ситуациях. Так что если что - пиши

+ еще на сайти АТИ написано:When the notebook is plugged in to the power socket, ATI Switchable Graphics enables the ATI Mobility Radeon™ HD Premium graphics processor for astonishing performance. The discrete graphics processor delivers high performance and incredible 3D graphics when your notebook is plugged in. And the power of your ATI Mobility Radeon discrete graphics processor allows you to enjoy superior HD gaming, Blu-ray movies and other HD content in full HD-1080p on your HD-capable monitor. Whether you use it at home, in the office, or while on the move, ATI Switchable Graphics helps you meet your every need.

invalidCCIE сказав...

без асеровских тулзов преключение не происходит - система использует только одну видяху. переключение автоматом происходит при большинстве событий ацпи, при достижении ключевых уровней заряда, засыпании, пробуждении, закрытии крышки, и т.д.
и да, при этом пользователь видит несколько секунд конвульсий, и падение заряда акума разом на 5% :)

но то такое, я все равно не собираюсь ставить себе венду - смысла нет. все утилиты которые мне нужны для комфортной работы есть только под линухой (париться с виртуалками или сигвином не хочу).