Главная > General > nouveau и reclocking

nouveau и reclocking

Уже довольно долгое время я использую nouveau и решил состряпать маленькую заметочку. На самом деле не все так плохо, как можно прочитать на различных форумах, а если Вы не игроман, то nouveau самое оно. Собственно какие преимущества Вы получите:

  • KMS — штатное разрешение экрана в консоли, плюс шрифты будут четкими, а не размазанными как при использовании фрэймбуфера, а также мгновенное переключение между tty и X`ми;
  • не нужно пересобирать nvidia драйвер после обновления ядра;
  • меньшее потребление памяти.

Из недостатков можно выделить меньшую производительность (по сравнению с nvidia-блобом), немного большую нагрузку на процессор и возможно, работа вентилятора на полных оборотах.

Все эксперименты проходили на gentoo, но справедливы и для других дистрибутивов.

Для быстрой смены между nouveau и nvidia можно использовать следующий скрипт:

#!/bin/bash
#test root
if [ `id -u` -ne 0 ]; then  echo "You need be root"; exit 1; fi

#test arg
if [ $# -ne 1 ]; then  echo "Usage: $0 <1> nvidia | <2> nouveau"; exit 1; fi

#args
ARGS=$1

#config files
BLACKLIST=/etc/modprobe.d/blacklist.conf
XORGCONFIG=/etc/X11/xorg.conf

case $ARGS in
        nvidia|1)
                echo "Update blacklist.conf"
                sed s/nvidia/nouveau/ -i $BLACKLIST
                echo "Update xorg.conf"
                sed s/nouveau/nvidia/ -i $XORGCONFIG
                eselect opengl set nvidia
                exit 0
        ;;
        nouveau|2)
                echo "Update blacklist.conf"
                sed s/nouveau/nvidia/ -i $BLACKLIST
                echo "Update xorg.conf"
                sed s/nvidia/nouveau/ -i $XORGCONFIG
                eselect opengl set xorg-x11
                exit 0
        ;;
        *)
                echo "Usage: $0 <1> nvidia | <2> nouveau"
                exit 1
        ;;
esac

Внимание! nouveau должен быть собран модулем.
Конечно можно было бы переписать скрипт иначе, для «горячей» смены драйвера, но все-равно пришлось бы перезапускать иксы.
Если загружается nvidia, то используется uvesafb. Для этого в файл /etc/conf.d/modules:

modules="uvesafb"

и в файл /etc/modprobe.d/uvesafb.conf:

options uvesafb mode_option=1366x768-32 scroll=ywrap

Конечно можно было добавить строчку в загрузчик к параметрам ядра

video=uvesafb:mtrr:3,ywrap,1366x768-32

Тем самым мы обеспечим комфортные условия работы в консоли независимо от используемого драйвера. Теперь вернемся к настройке nouveau. Тут достаточно всего одного параметра nouveau.modeset=1, который включает поддержку KMS. Но руки чешутся еще что-нибудь настроить, и можно добавить еще nouveau.perflvl_wr=7777, чтобы можно было вручную менять performance level, а для фиксации добавить nouveau.perflvl=2. Также эти параметры можно разместить в /etc/modprobe.d/nouveau.conf

options nouveau modeset=1
options nouveau nouveau.perflvl_wr=7777
# Если хотите указать performance level
# этот параметр лучше указывать в загрузчике
options nouveau perflvl=2
#на случай возникновения проблем с tty
#options nouveau nofbaccel=1

Теперь давайте посмотрим как обстоят дела на самом деле.

карта: nVidia Corporation G98M [GeForce G 103M] (rev a1)
mesa-9999
libdrm-9999
xf86-video-nouveau-9999
xorg-server-1.12.0 # и тут проверю на 9999
kernel-3.4.0-rc5

Смотрим какие доступны режимы.

cat /sys/class/drm/card0/device/performance_level*
profile: 2, 2
c: core 500MHz shader 1000MHz memory 399MHz voltage 1090mV
0: core 169MHz shader 338MHz memory 100MHz voltage 900mV fanspeed 100%
1: core 275MHz shader 550MHz memory 250MHz voltage 900mV fanspeed 100%
2: core 500MHz shader 1000MHz memory 400MHz voltage 1090mV fanspeed 100%
3: core 640MHz shader 1600MHz memory 500MHz voltage 1200mV fanspeed 100%

Для смены режима необходимо:

echo "число"  > /sys/class/drm/card0/device/performance_level

На kernel-3.3 работают 0 и 1, а на kernel-3.4 0, 1 и 2.
В итоге glxgears показал следующие результаты:

core 169MHz ~ 270 FPS
core 275MHz ~ 630 FPS
core 500MHz ~ 1000 FPS
nvidia-drivers ~ 4000 FPS

Чтобы зафиксировать результат добавил следующие параметры в загрузчик:

nouveau.perflvl_wr=7777 nouveau.perflvl=2

Кстати, nvidia-drivers не собирается с kernel-3.4, для успешной сборки посмотрите сюда.

Подводя итоги, nouveau обеспечивает вполне приемлемый уровень производительности, и в нормальных условиях вообще не наблюдается каких-либо глюков и тормозов. Без проблем позволяет играть, например, в urbanterror, но для более тяжелых игр скорее всего понадобятся nvidia-drivers.

Categories: General Tags: , , , ,
  1. ТАНК
    30 декабря 2014 в 07:33 | #1

    Разгон на свободных дровах ещё невозможен?

What is 2 + 11 ?
Please leave these two fields as-is:
Чтобы продолжить вы должны решить простое уравнение (так мы узнаем, что вы человек) :-)