두 번째 그래픽 카드에 출력이 없습니다.

두 번째 그래픽 카드에 출력이 없습니다.

내 NVidia GTX 750 Ti 장치에서 GPU 패스스루가 작동하지 않는 이유를 알아내려고 합니다. 그래서 해당 그래픽 카드를 사용하여 X의 두 번째 인스턴스를 시작하려고 했습니다. 기본 인스턴스는 GTX 1070입니다.

1070은 DisplayPort를 통해, 750Ti는 HDMI를 통해 동일한 모니터에 연결했습니다.

Windows를 부팅하면 둘 다 감지되고 활성화되며 DisplayPort 및 HDMI를 통해 출력됩니다.

Linux로 부팅하면 1070이 제대로 작동합니다. 750Ti 감지됨:

# nvidia-smi -L
GPU 0: GeForce GTX 1070 (UUID: GPU-a66c5cbb-a541-a3d7-845c-f8c0c021ae71)
GPU 1: GeForce GTX 750 Ti (UUID: GPU-db546e26-f6d5-5345-45e4-434e0bfb4f62)

NVIDIA 설정 ​​프로그램에서는 모니터에 연결된 것으로 표시됩니다.

그러나 두 번째 Xorg 인스턴스를 시작할 때 HDMI 포트에서 어떤 출력도 얻지 못합니다.

내가 사용하는 명령은

sudo Xorg :2 vt8 -config xorg-second.conf  -configdir conf.d

여기서 다른 설정이 적용되지 않도록 conf.d는 비어 있습니다.xorg-second.conf빼고는 거의 표준

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    BusID          "PCI:3:0:0"
    VendorName     "NVIDIA Corporation"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Coolbits" "4"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

올바른 그래픽 카드가 선택되었는지 확인하세요.

케이블을 바꿔보았으나 소용이 없었습니다.

두 번째 그래픽 카드가 내 모니터로 출력을 보내지 않는 이유는 무엇이며 어떻게 해결합니까?


편집하다xrandr:이것은 X의 두 인스턴스에 대한 출력입니다.

$ xrandr --display :1
Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767
DVI-D-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 553mm x 311mm
   2560x1440     59.95*+
   2048x1152     60.00  
   1920x1200     59.88  
   1920x1080     60.00    59.94    50.00    29.97    25.00    23.97    60.05    60.00    50.04  
   1680x1050     59.95  
   1600x1200     60.00  
   1280x1024     75.02    60.02  
   1280x720      60.00    59.94    50.00  
   1200x960      59.90  
   1152x864      75.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93  
DP-5 disconnected (normal left inverted right x axis y axis)

$ xrandr --display :2
Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 16384 x 16384
DVI-I-0 disconnected primary (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 2560x1440+0+0 (normal left inverted right x axis y axis) 553mm x 311mm
   2560x1440     59.95*+
   2048x1152     60.00  
   1920x1200     59.88  
   1920x1080     60.00    59.94    50.00    29.97    25.00    23.97    60.05    60.00    50.04  
   1680x1050     59.95  
   1600x1200     60.00  
   1280x1024     75.02    60.02  
   1280x720      60.00    59.94    50.00  
   1200x960      60.00  
   1152x864      75.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93  
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)

흥미롭게도 xrandr --display :2두 번째로 실행하면 작동이 멈춥니다. 출력의 마지막 몇 줄은 strace다음과 같습니다.

socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path=@"/tmp/.X11-unix/X2"}, 20) = 0
getpeername(3, {sa_family=AF_UNIX, sun_path=@"/tmp/.X11-unix/X2"}, [124->20]) = 0
uname({sysname="Linux", nodename="mars", ...}) = 0
access("/run/user/1000/gdm/Xauthority", R_OK) = 0
open("/run/user/1000/gdm/Xauthority", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0700, st_size=96, ...}) = 0
read(4, "\1\0\0\4mars\0\0\0\22MIT-MAGIC-COOKIE-1\0\20"..., 4096) = 96
close(4)                                = 0
getsockname(3, {sa_family=AF_UNIX}, [124->2]) = 0
fcntl(3, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base="l\0\v\0\0\0\22\0\20\0\0\0", iov_len=12}, {iov_base="", iov_len=0}, {iov_base="MIT-MAGIC-COOKIE-1", iov_len=18}, {iov_base="\0\0", iov_len=2}, {iov_base="\36\271\266\234:\323(\237\35y\334(X\37\32\10", iov_len=16}, {iov_base="", iov_len=0}], 6) = 48
recvfrom(3, 0x18dd330, 8, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1

편집 2

$ xset -display :2 q(DPMS에 관한 부분만)

DPMS (Energy Star):
  Standby: 600    Suspend: 600    Off: 600
  DPMS is Enabled
  Monitor is On

Xorg 로그 -https://pastebin.com/fK7g5VSd

답변1

:2로그를 보면 서버가 기본 그래픽 카드 도 감지하는 것을 볼 수 있습니다 GTX 1070 (GP104-A) at PCI:1:0:0 (GPU-1). 일반 X 드라이버에서는 이런 일이 발생하지 않습니다. 드라이버에 xorg.conf만 사용하도록 지시하면 PCI:3:0:0이 카드만 사용하고 다른 카드는 볼 수 없습니다.

따라서 제가 설명할 유일한 설명은 폐쇄 소스 Nvidia드라이버가 다른 인프라(Windows 및 Linux와 매우 유사한 통합 커널 드라이버)를 사용하기 때문에 이러한 Nvidia드라이버는 이러한 상황을 처리하도록 설계되지 않았거나 이를 처리하기 위해 다른 방식으로 작동한다는 것입니다. 폐쇄 소스 드라이버를 사용하는 한 커널 드라이버의 단일 인스턴스가 사용 가능한 모든 카드를 구동해야 할 가능성이 높습니다. 단일 인스턴스에 연결하기 위해 여러 X 서버를 사용하여 실제로 테스트한 사람은 아무도 없습니다(결국 Nvidia는 여러 화면에 대해 Nvidia 전용 "TwinView"만 제공합니다). 가상 머신의 한 카드에 대해 하나의 커널 드라이버를 사용하고 가상 머신 외부의 다른 커널 드라이버를 사용하는 것은 말할 것도 없습니다.

드라이버를 사용할 수 없다면 nouveau실제로 할 수 있는 일은 없습니다.

Nvidia의 전용 프로그램을 사용해 볼 수 있습니다.375.39에 대한 옵션예를 들어 ProbeAllGpus두 서버의 경우 로 설정됩니다. FALSE도움이 될 수도 있고 아닐 수도 있습니다. 도움이 될 수 있지만 MultiGPU이는 다양한 상황에 적용된다고 생각합니다.

ConnectedMonitor어떤 방식 으로든 디스플레이를 제한해 볼 수도 있습니다 UseDisplayDevice.

이 이론을 테스트하는 한 가지 방법은 Nouveau에서도 지원되는 두 개의 Nvidia 카드를 사용하고 Nouveau 드라이버가 이러한 방식으로 작동하도록 할 수 있는지 확인하는 것입니다. 불행하게도 이 작업을 수행할 하드웨어가 없습니다.

관련 정보