NVIDIA медленнее встроенного INTEL-a

Есть ноутбук Acer V3-571G
В нем 2 видеокарты

00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GK107M [GeForce GT 640M] (rev ff)

Ну и возникли традиционные проблемы с запуском bumblebee с драйвером nvidia.
Решил - да ну его нафиг эту проприетарщину - поставил nouveau. Производительность мягко говоря не впечатлила.
glxgears показывал FPS раза в два меньше чем на встроенной intel. В результате плюнул я на это дело и забил на nvidia - не скажу, что оно мне сильно надо, просто как-то меня ломает, что-то у меня не работает.

Сегодня в yaourt появились свежие драйвера nvidia и вот предпринял вторую попытку. Очередной бубен дал таки свои результаты и карточка наконец завелась с драйвером nvidia (331.20-1) но FPS по прежнему не радует.

Intel:

# glxinfo | egrep "glx (vendor|version)"                                                                   130
server glx vendor string: SGI
server glx version string: 1.4
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4

# vblank_mode=0 glxgears
ATTENTION: default value of option vblank_mode overridden by environment.
39866 frames in 5.0 seconds = 7973.183 FPS
43008 frames in 5.0 seconds = 8601.469 FPS
43087 frames in 5.0 seconds = 8617.383 FPS

Nvidia:

# primusrun glxinfo | egrep "glx (vendor|version)"
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
client glx vendor string: primus
client glx version string: 1.4

# vblank_mode=0 primusrun glxgears
ATTENTION: default value of option vblank_mode overridden by environment.
14610 frames in 5.0 seconds = 2921.898 FPS
15163 frames in 5.0 seconds = 3032.556 FPS

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

Вот мой /etc/bumblebee/xorg.conf.nvidia

Section "ServerLayout"
    Identifier  "Layout0"
    # Option      "AutoAddDevices" "false"
    # Option      "AutoAddGPU" "false"
EndSection
Section "Device"
    Identifier  "DiscreteNvidia"
    Driver      "nvidia"
    VendorName  "NVIDIA Corporation"
#   If the X server does not automatically detect your VGA device,
#   you can manually set it here.
#   To get the BusID prop, run `lspci | egrep 'VGA|3D'` and input the data
#   as you see in the commented example.
#   This Setting may be needed in some platforms with more than one
#   nvidia card, which may confuse the proprietary driver (e.g.,
#   trying to take ownership of the wrong device). Also needed on Ubuntu 13.04.
#    BusID "PCI:01:00.0"
#   Setting ProbeAllGpus to false prevents the new proprietary driver
#   instance spawned to try to control the integrated graphics card,
#   which is already being managed outside bumblebee.
#   This option doesn't hurt and it is required on platforms running
#   more than one nvidia graphics card with the proprietary driver.
#   (E.g. Macbook Pro pre-2010 with nVidia 9400M + 9600M GT).
#   If this option is not set, the new Xorg may blacken the screen and
#   render it unusable (unless you have some way to run killall Xorg).
    # Option "ProbeAllGpus" "false"
    # Option "NoLogo" "true"
    # Option "UseEDID" "false"
    # Option "UseDisplayDevice" "none"
EndSection

Подскажите куда копнуть.

Возможно, частота держится на минимуме. Добавь
Option     "RegistryDwords" "PerfLevelSrc=0x3322; PowerMizerDefaultAC=0x1
в секцию Device.
С PowerMizer уже начал играться сам - некоторое влияние оно оказывает но только в сторону уменьшения производительности.

marlock
Возможно, частота держится на минимуме. Добавь
Option     "RegistryDwords" "PerfLevelSrc=0x3322; PowerMizerDefaultAC=0x1
в секцию Device.

# vblank_mode=0 primusrun glxgears
ATTENTION: default value of option vblank_mode overridden by environment.
14495 frames in 5.0 seconds = 2898.992 FPS
14856 frames in 5.0 seconds = 2971.087 FPS
14919 frames in 5.0 seconds = 2983.706 FPS
14769 frames in 5.0 seconds = 2953.652 FPS

С PowerMizerDefaultAC=0x3

vblank_mode=0 primusrun glxgears
ATTENTION: default value of option vblank_mode overridden by environment.
6987 frames in 5.0 seconds = 1397.318 FPS
7104 frames in 5.0 seconds = 1420.658 FPS
7108 frames in 5.0 seconds = 1421.577 FPS

Т.е. опция эта влияет на работу но даже в наилучшем случае (PowerMizerDefaultAC=0x1) карточка тем не менее быстрее работать не стала.

Про PerfLevelSrc еще погуглю. Спасибо за наводку.
Еще нашел подозрительные записи в логах иксов

[  9020.727] (II) NVIDIA(0): Detected PCI Express Link width: 16X
[  9020.727] (--) NVIDIA(0): Valid display device(s) on GeForce GT 640M at PCI:1:0:0
[  9020.727] (--) NVIDIA(0):     none
[  9020.727] (II) NVIDIA(0): Validated MetaModes:
[  9020.727] (II) NVIDIA(0):     "NULL"
[  9020.727] (**) NVIDIA(0): Virtual screen size configured to be 1920 x 1080
[  9020.727] (WW) NVIDIA(0): Unable to get display device for DPI computation.
[  9020.727] (==) NVIDIA(0): DPI set to (75, 75); computed from built-in default
[  9020.727] (--) Depth 24 pixmap format is 32 bpp
[  9020.727] (II) NVIDIA: Using 3072.00 MB of virtual memory for indirect memory
[  9020.727] (II) NVIDIA:     access.
[  9020.730] (II) NVIDIA(0): Setting mode "NULL"

Вот эти NULL-ы как-то вызывают какие-то смутные сомнения
Добавил при загрузке ядра enable_mtrr_cleanup mtrr_spare_reg_nr=1

Стало лучше но незначительно - в общем-то прирост в пределах погрешности

vblank_mode=0 primusrun glxgears
ATTENTION: default value of option vblank_mode overridden by environment.
14747 frames in 5.0 seconds = 2949.231 FPS
15285 frames in 5.0 seconds = 3056.900 FPS
15261 frames in 5.0 seconds = 3052.135 FPS
15247 frames in 5.0 seconds = 3049.229 FPS
Интересно все-таки посмотреть как работает проприетарный драйвер от nvidia который просто nvidia, не nouveau, не bumblebee.
Если с ним будут проблемы в виде низкого fps, то проблема может быть в этом:
http://www.opennet.ru/opennews/art.shtml?num=38316
Я почему-то думаю что разницы быть не должно. Драйвер-то один и тот-же - в случае bumblebee он просто динамически загружается выгружается. Т.е. это не какая-то отдельная версия драйвера.

Насчет статьи по ссылке

однако системы с очень большим количеством оперативной памяти (128GB и выше) могут столкнуться с отрицательными эффектами

это не мой случай :)
optirun же
optirun glxgears
Bridge=auto
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
palpalych
optirun же
optirun glxgears
Bridge=auto

Без разницы - могу для optirun бенчмарки привести - тот-же результат.
Собственно и primusrun насколько я помню не что иное как обертка над opturun -b primus

Примус даже чуть побыстрее, что в общем-то и правильно, но все равно максимум, что удается выжать из nvidia это 3000 с копейками FPS.
Против 7000-8000 у интела выглядит мягко говоря бледновато.
Видимо так и должно быть
$ vblank_mode=0 primusrun glxgears
8415 frames in 5.0 seconds = 1682.946 FPS
8879 frames in 5.0 seconds = 1775.686 FPS
8867 frames in 5.0 seconds = 1773.260 FPS
8795 frames in 5.0 seconds = 1758.932 FPS
~]$ vblank_mode=0 optirun glxgears
9652 frames in 5.0 seconds = 1930.391 FPS
10094 frames in 5.0 seconds = 2018.767 FPS
10032 frames in 5.0 seconds = 2006.287 FPS
9995 frames in 5.0 seconds = 1998.922 FPS
10001 frames in 5.0 seconds = 2000.062 FPS
~]$ vblank_mode=0 glxgears
32760 frames in 5.0 seconds = 6551.923 FPS
35665 frames in 5.0 seconds = 7132.953 FPS
35941 frames in 5.0 seconds = 7188.094 FPS
35668 frames in 5.0 seconds = 7133.580 FPS
35712 frames in 5.0 seconds = 7142.310 FPS
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
 
Зарегистрироваться или войдите чтобы оставить сообщение.