私は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 :2
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」のみを提供します)。仮想マシンの1つのカードに1つのカーネルドライバを使用し、仮想マシン以外の別のカーネルドライバを使用することは言うまでもありません。
ドライバが利用できない場合、nouveau
実際にできることはありません。
Nvidiaの専用プログラムを試してみてください。375.39のオプションたとえば、ProbeAllGpus
両方のサーバーの場合に設定されます。FALSE
役に立つかもしれないし、そうでないかもしれません。役に立つかもしれませんが、MultiGPU
これはさまざまな状況に当てはまると思います。
ConnectedMonitor
何らかの方法でディスプレイを制限することもできますUseDisplayDevice
。
この理論をテストする1つの方法は、Nouveauでもサポートされている2つのNvidiaカードを使用し、Nouveauドライバがこの方法で動作できるようにすることです。残念ながら、これを行うハードウェアはありません。