17.7. GPU デバイスの割り当て
- NVIDIA Quadro K シリーズ、M シリーズ、および P シリーズ (モデル 2000 シリーズ以降)
- NVIDIA GRID K シリーズ
- NVIDIA Tesla K シリーズおよび M シリーズ
ホスト物理マシンカーネルの IOMMU サポートを有効にします。
Intel VT-d システムの場合、これはintel_iommu=onおよびiommu=ptパラメーターをカーネルコマンドラインに追加することによって実行されます。AMD-Vi システムの場合、オプションはamd_iommu=ptになります。このオプションを有効にするには、以下のようにGRUB_CMDLINX_LINUX行を編集するか、またはこれを/etc/sysconfig/grub設定ファイルに追加します。GRUB_CMDLINE_LINUX="rd.lvm.lv=vg_VolGroup00/LogVol01 vconsole.font=latarcyrheb-sun16 rd.lvm.lv=vg_VolGroup_1/root vconsole.keymap=us $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/rhcrashkernel-param || :) rhgb quiet intel_iommu=on iommu=pt"
注記
IOMMU についての詳細は、「付録D IOMMU グループの使用」を参照してください。ブートローダー設定の再生成
このオプションを組み込むには、以下のコマンドを実行し、grub2-mkconfigを使用してブートローダー設定を再生成します。#
grub2-mkconfig -o /etc/grub2.cfgUEFI ベースのホストの場合、ターゲットファイルは/etc/grub2-efi.cfgであることに注意してください。ホスト物理マシンを再起動します。
このオプションを有効にするには、以下のコマンドを使ってホスト物理マシンを再起動します。#
reboot
手順17.13 GPU デバイスを、ホスト物理マシンドライバーへのバインドから除外する
PCI バスアドレスを特定します。
PCI バスアドレスとデバイスの ID を特定するには、以下のlspciコマンドを実行します。この例では、Quadro または GRID カードなどの VGA コントローラーが以下のように使用されます。#
lspci -Dnn | grep VGA0000:02:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK106GL [Quadro K4000] [10de:11fa] (rev a1)結果の検索は、このデバイスの PCI バスアドレスが 0000:02:00.0 であることを示し、デバイスの PCI ID が 10de:11fa であることを示しています。ネイティブのホスト物理マシンドライバーによる GPU デバイスの使用を防ぎます。
ネイティブのホスト物理マシンドライバーが GPU デバイスを使用することを防ぐには、pci-stub ドライバーで PCI ID を使用することができます。これを実行するには、以下のように追加オプションを/etc/sysconfig/grubにあるGRUB_CMDLINX_LINUX設定ファイルに追加します。pci-stub.ids=10de:11fa
pci-stub 用に追加の PCI ID を追加するには、単にそれらをコンマで区切ります。ブートローダー設定の再生成
このオプションを組み込むには、以下のコマンドを実行し、grub2-mkconfigを使用してブートローダー設定を再生成します。#
grub2-mkconfig -o /etc/grub2.cfgUEFI ベースのホストの場合、ターゲットファイルは/etc/grub2-efi.cfgであることに注意してください。ホスト物理マシンを再起動します。
このオプションを有効にするには、以下のコマンドを使ってホスト物理マシンを再起動します。#
reboot
# virsh nodedev-dumpxml pci_0000_02_00_0
<device>
<name>pci_0000_02_00_0</name>
<path>/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0</path>
<parent>pci_0000_00_03_0</parent>
<driver>
<name>pci-stub</name>
</driver>
<capability type='pci'>
<domain>0</domain>
<bus>2</bus>
<slot>0</slot>
<function>0</function>
<product id='0x11fa'>GK106GL [Quadro K4000]</product>
<vendor id='0x10de'>NVIDIA Corporation</vendor>
<!-- pay attention to this part -->
<iommuGroup number='13'>
<address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
<address domain='0x0000' bus='0x02' slot='0x00' function='0x1'/>
</iommuGroup>
<pci-express>
<link validity='cap' port='0' speed='8' width='16'/>
<link validity='sta' speed='2.5' width='16'/>
</pci-express>
</capability>
</device>
図17.22 GPU 向けの XML ファイルの調整例
<iommuGroup> 要素です。iommuGroup は、IOMMU 機能および PCI バストポロジーのために他のデバイスから切り離されていると見なされるデバイスセットを示します。iommuGroup 内のすべてのエンドポイントデバイス (PCIe root ポート、ブリッジまたはスイッチポートではないデバイスなど) は、ゲストに割り当てるためにネイティブのホストドライバーからのバインドを解除する必要があります。上記の例では、グループは GPU デバイス (0000:02:00.0) およびコンパニオンオーディオデバイス (0000:02:00.1) で構成されています。詳細は、「付録D IOMMU グループの使用」を参照してください。
注記
# virsh nodedev-detach pci_0000_02_00_1
Device pci_0000_02_00_1 detachedvirsh edit [domain]) を直接編集するか、または virsh attach-device で GPU をドメインに割り当てるかのいずれかにより、virt-manager または virsh を使用して実行できます。virsh attach-device コマンドを使用している場合は、以下のようにデバイス用の XML フラグメントをまず作成する必要があります。
<hostdev mode='subsystem' type='pci' managed='yes'>
<driver name='vfio'/>
<source>
<address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</source>
</hostdev>図17.23 GPU の割り当て用の XML ファイル例
virsh attach-device [domain] [file] --persistent を実行して XML を仮想マシンの設定に組み込みます。ゲスト仮想マシン内の既存のエミュレートされたグラフィックスデバイスのほかに、割り当てられた GPU が追加されることに注意してください。割り当てられた GPU は、仮想マシン内の二次的なグラフィックスデバイスとして処理されます。プライマリーグラフィックスデバイスとしての割り当てはサポートされず、仮想マシンの XML 内のエミュレートされたグラフィックスデバイスは削除することができません。
注記
modprobe.blacklist=nouveau を使用することでブラックリスト化される可能性があることに注意してください。他のゲスト仮想マシンについての情報は、オペレーティングシステム固有のドキュメントを参照してください。
# lspci | grep VGA
00:02.0 VGA compatible controller: Device 1234:1111
00:09.0 VGA compatible controller: NVIDIA Corporation GK106GL [Quadro K4000] (rev a1)/etc/X11/xorg.conf は以下の強調表示されたエントリーを加えるように変更されます。
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:0:9:0"
EndSection
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.