Страница 1 из 1

Как отключить дискретную карту, после использования optirun

Добавлено: 27 июн 2015, 12:12
admsasha
Как отключить дискретную карту, после использования optirun ?
Карта nvidia + intel

В теории написано, что должна сама отключатся, но судя по /proc/acpi/bbswitch это не так.

Код: Выделить всё

tee /proc/acpi/bbswitch <<< OFF 
не помогает

До использования optirun

Код: Выделить всё

# lspci -vnn | grep '\[030[02]\]'
00:02.0 VGA compatible controller [0300]: Intel Corporation 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) (prog-if 00 [VGA controller])
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF108M [GeForce GT 630M] [10de:0de9] (rev ff) (prog-if ff)
после

Код: Выделить всё

# lspci -vnn | grep '\[030[02]\]'
00:02.0 VGA compatible controller [0300]: Intel Corporation 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) (prog-if 00 [VGA controller])
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF108M [GeForce GT 630M] [10de:0de9] (rev a1) (prog-if 00 [VGA controller])

Re: Как отключить дискретную карту, после использования optirun

Добавлено: 27 июн 2015, 13:08
keleg
А primusrun работает?

Re: Как отключить дискретную карту, после использования optirun

Добавлено: 27 июн 2015, 13:15
admsasha

Код: Выделить всё

$ glxgears
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
305 frames in 5.0 seconds = 60.882 FPS
301 frames in 5.0 seconds = 60.081 FPS
301 frames in 5.0 seconds = 60.078 FPS
XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
      after 3008 requests (3008 known processed) with 0 events remaining.
Во время выполнения этой команды, включилась дискретная карта, но по завершению не выключилась

Код: Выделить всё

$ primusrun glxgears
293 frames in 5.0 seconds = 58.406 FPS
301 frames in 5.0 seconds = 60.081 FPS
301 frames in 5.0 seconds = 60.080 FPS
primus: warning: dropping a frame to avoid deadlock
XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
      after 37 requests (37 known processed) with 0 events remaining.
primus: warning: dropping a frame to avoid deadlock
primus: warning: timeout waiting for display worker

Код: Выделить всё

$ optirun glxgears
3572 frames in 5.0 seconds = 714.393 FPS
3633 frames in 5.0 seconds = 726.558 FPS
3676 frames in 5.0 seconds = 735.126 FPS
[VGL] ERROR: in readback--
[VGL]    241: Window has been deleted by window manager

Re: Как отключить дискретную карту, после использования optirun

Добавлено: 27 июн 2015, 21:52
PastorDi
Да, я тоже заметил, что после использования optirun/primusrun Nvidia не отрубается. Всё хотел написать про это, да забыл. :(

Re: Как отключить дискретную карту, после использования optirun

Добавлено: 29 июн 2015, 10:02
aponomarenko
admsasha писал(а):Как отключить дискретную карту, после использования optirun ?
Карта nvidia + intel

В теории написано, что должна сама отключатся, но судя по /proc/acpi/bbswitch это не так.

Код: Выделить всё

tee /proc/acpi/bbswitch <<< OFF 
не помогает

До использования optirun

Код: Выделить всё

# lspci -vnn | grep '\[030[02]\]'
00:02.0 VGA compatible controller [0300]: Intel Corporation 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) (prog-if 00 [VGA controller])
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF108M [GeForce GT 630M] [10de:0de9] (rev ff) (prog-if ff)
после

Код: Выделить всё

# lspci -vnn | grep '\[030[02]\]'
00:02.0 VGA compatible controller [0300]: Intel Corporation 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) (prog-if 00 [VGA controller])
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF108M [GeForce GT 630M] [10de:0de9] (rev a1) (prog-if 00 [VGA controller])
Сделайте пробу компьютера сразу после попытки отключения: http://wiki.rosalab.ru/ru/index.php/%D0 ... 0%B8%D1%8F

Из lspci карта после отключения не должна исчезать. Строка которую вы грепали останется. Просто будет меньше информации по карте, да и то только после перезагрузки до первого ее использования.

Re: Как отключить дискретную карту, после использования optirun

Добавлено: 29 июн 2015, 11:12
PastorDi
Я если честно, не смотрел в lspci. У меня, ДО использования optirun/primusrun модуль nvidia не загружен. Как только попользуешься opritun/primusrun, ПОСЛЕ использования модуль nvidia не выгружается, так и остается загруженным. А по идее должен выгружаться.

Re: Как отключить дискретную карту, после использования optirun

Добавлено: 29 июн 2015, 14:18
aponomarenko
После первого запуска optirun загружается модуль nvidia и используется процессом Xorg:

Код: Выделить всё

sudo lsof -n -w /dev/nvidia0

COMMAND     PID   USER    FD    TYPE   DEVICE  SIZE/OFF   NODE   NAME
Xorg      19231   root   mem     CHR    195,0            44303   /dev/nvidia0
...
Из-за него не получается выгрузить модуль:

Код: Выделить всё

sudo rmmod nvidia
rmmod: ERROR: Module nvidia is in use
Чтобы его все-таки выгрузить нужно сделать:

Код: Выделить всё

sudo killall Xorg
sudo rmmod nvidia
После этого выключение работает:

Код: Выделить всё

sudo tee /proc/acpi/bbswitch <<<OFF

cat /proc/acpi/bbswitch
0000:01:00.0 OFF
Вот что выдает lspci после этого:

Код: Выделить всё

lspci -vnn
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF108GLM [NVS 5200M] [10de:odfc] (rev ff) (prog-if ff)
        !!! Unknown header type 7f
        Kernel modules: nvidiafb, nouveau, nvidia346
т.е. карта отключена.

Re: Как отключить дискретную карту, после использования optirun

Добавлено: 29 июн 2015, 15:02
PastorDi
Т.е. получается, что все правильно работает?

Re: Как отключить дискретную карту, после использования optirun

Добавлено: 29 июн 2015, 16:45
aponomarenko
PastorDi писал(а):Т.е. получается, что все правильно работает?
Похоже, что это работает как задумывалось.

Вместо killall Xorg можно сделать:

Код: Выделить всё

sudo systemctl stop bumblebeed
После этого модуль nvidia также нормально извлекается и карта может быть отключена.

Re: Как отключить дискретную карту, после использования optirun

Добавлено: 29 июн 2015, 17:22
admsasha
Ну я просто bumblebeed рестартую, и дискретная карта сама отключается. Только это какой то кривой метод.