вторник, 16 июня 2009 г.

Решение проблемы тормозов 2D в Linux для NVIDIA GeForce 8200.

Вы можете свободно использовать материал статьи, однако большая просьба - при цитировании и копировании материала указывайте первоисточник, т.е. этот блог!

Не так давно я обновил свой комп. Конфигурация:

AMD Athlon XP, 1833 MHz (11 x 167) 2500+
Epox EP-8RDA3, чипсет nVIDIA nForce2 Ultra 400
1024 Мб PC2700 DDR SDRAM
ATI Radeon X1650 Pro (RV530) (AGP)


сменилась на

AMD Athlon 64 X2 5400
2x2048Mb DDR2 PC2-6400(800Mhz) Kingston
MB Asus M3N78-VM, чипсет NVIDIA GeForce 8200 (MCP78S)
Встроенное в MB видео Nvidia 8200 - по сути немного урезанная наружная 8400.


Собственно конфигурация выбиралась из принципа: минимально подходящая конфигурация за приемлимую сумму.
Выбор именно на NVidia (хоть оно и встроенное) пал потому что на предыдущей конфигурации столкнулся с проблемами в Linux, в частности с кривым драйвером ATI который, ну никак не желал обеспечивать нормальную работу OpenGL в ALT Linux. http://www.altlinux.ru

Намучавщись c обновлениями и настройками, пару раз положив насмерть ALT Linux и начитавшись разных форумов сделал для себя вывод - в ближайшее время нормальных драйверов для ATI в Linux не увижу.

ALT Linux встал сразу и все вроде работает, в том числе и OpenGL - игрушки The Thing и Alice под Wine бегают очень даже замечательно. Остальное пока запустить нормально не удалось, потому как Wine имеет свои хитрости и ему надо "выкручивать руки". Однако наблюдались иногда тормоза уже в 2D режиме. В частности в Opera и Firefox при переключении вкладок, очень отчетливо было видно как оно прорисовывается. А иногда и обои рабочего стола отрисовывались очень медленно.

Я перерыл кучу ссылок и ни одна из них не давала объяснения - складывается стойкое ощущение что русскоязычные линуксойды умеют только гнуть пальцы и оскорблять тех кто меньше знает, как гопники на улице. Они грузят людей терминами, но никак не помогают решению проблем, но это отдельная тема и я ее здесь обсуждать не буду.

В общем никакие обновления до последних версий всего что было из сетевых репозиториев ALT Linux не помогло, все настройки я скрутил на минимум. Compiz вообще снес нафик, ибо бесполезная блажь и свистоперделка.

В результате упорных поисков была найдена нужная информация на ресурсе http://www.nvnews.net

Если задать в консоли:

# nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1

то все просто замечательно начинает бегать.

Объяснение:
1) InitialPixmapPlacement=2, который по умолчанию в состоянии 1, влияет на размещение пиксельно буфера в Оперативной памяти при значении 1, либо в памяти видеокарт при значении 2. Естественно второе дает существенный прирост, потому что скорость работы с собственной памятью, даже для встроенной видюхи (когда память выделена из общей памяти компа) все равно быстрее чем работа с системной памятью.

2) GlyphCache=1 размещает все шрифты в видеопамять. И это также дает некоторый прирост. Хотя у меня существенный прирост дал в основном первый пункт, но зачем отказываться от улучшения, так что прописал также.

Также в статье рекомендуется в /etc/X11/xorg.conf в раздел Screen section добавить следующее:

Option "PixmapCacheSize" "1000000"

Опция оставляет постоянно выделенный кусок видеопамяти в 5 Мб для вышеупомянутого пиксельного буфера. Я думаю при больших размерах памяти современных видеокарт (у меня 256 Мб выделено из основной памяти) это не сильно большая потеря, зато нет лишних оперций по перераспределению размера, что дает дополнительное снижение затрат ресурсов и обеспечивает прирост производительности.

У меня пока только осталась одна проблема - я не понял куда надо прописать для правильного автозапуска эти команды. В статье приводится рекомендация для прописывания в ~/.xinitrc/ ~/.kderc/ ~/.gnomerc, но у меня стоит KDE, ~/.xinitrc/ почему то отсутствует в ALT Linux, в ~/.kderc/ вообще что-то другое. В общем пока в папке автозапуска (можно получить доступ из меню запуска программ в ALT Linux) прописал ярлык с параметром "nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1". Работает конечно, но что-то в этом неправильное есть.

В общем я решил свою проблему может кому это поможет, кто-то может сказать что боян. Побольше бы таких боянов было известно - значительно проще стало бы жить.

А кто не хочет? ;-)

Комментариев нет: