2番目のグラフィックカードに出力がありません。

2番目のグラフィックカードに出力がありません。

私はNVidia GTX 750 TiデバイスでGPUパススルーが機能しない理由を見つけようとしています。だから私はグラフィックカードを使ってXの2番目のインスタンスを起動しようとしました。デフォルトインスタンスは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設定プログラムでは、モニターに接続されているとマークされています。

ただし、2番目の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

正しいグラフィックカードが選択されていることを確認してください。

ケーブルを変えてみましたが役に立ちませんでした。

2番目のグラフィックカードが私のモニタに出力を送信しないのはなぜですか?


編集するxrandr:これはXの2つのインスタンスの出力です。

$ 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 :22番目に実行すると動作が停止します。出力の最後の数行は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」のみを提供します)。仮想マシンの1つのカードに1つのカーネルドライバを使用し、仮想マシン以外の別のカーネルドライバを使用することは言うまでもありません。

ドライバが利用できない場合、nouveau実際にできることはありません。

Nvidiaの専用プログラムを試してみてください。375.39のオプションたとえば、ProbeAllGpus両方のサーバーの場合に設定されます。FALSE役に立つかもしれないし、そうでないかもしれません。役に立つかもしれませんが、MultiGPUこれはさまざまな状況に当てはまると思います。

ConnectedMonitor何らかの方法でディスプレイを制限することもできますUseDisplayDevice

この理論をテストする1つの方法は、Nouveauでもサポートされている2つのNvidiaカードを使用し、Nouveauドライバがこの方法で動作できるようにすることです。残念ながら、これを行うハードウェアはありません。

おすすめ記事