安装了 NOUVEAU 驱动程序的 Ubuntu GPU 直通指南

安装了 NOUVEAU 驱动程序的 Ubuntu GPU 直通指南

我找到一个指南,它告诉我执行以下操作以使 GPU 直通在 20.04 上正常工作

apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager ovmf

lspci -nn返回

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104 [GeForce RTX 3060 Ti Lite Hash Rate] [10de:2489] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation GA104 High Definition Audio Controller [10de:228b] (rev a1)

/etc/默认/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on kvm.ignore_msrs=1 vfio-pci.ids=10de:2489,10de:228b"

然后

update-grub

但是当我重新启动时,屏幕一片黑。22.04 的流程是否不同?i9-12900k 是 CPU

答案1

安装了 NOUVEAU 驱动程序的 Ubuntu GPU 直通指南

本指南已在 Ubuntu 22.04 LTS、22.10、23.04、23.10 上进行了测试,新派驱动程序和以下系统配置:

  • MSI® 主板 Z170A
  • 英特尔® 酷睿™ i5-6600 处理器
  • GeForce GTX 1650 AERO ITX 4G OC。

注意力!本指南仅适用于 Nouveau 驱动程序。请在开始系统更改之前仔细阅读文本。对于安装了专有 nvidia 驱动程序的 ubuntu,请参阅指南:安装了 NVIDIA 专有驱动程序的 Ubuntu GPU 直通指南

本指南所需的硬件规格

对于基于 Intel 的系统:

对于基于 AMD 的系统:

  • 带有集成显卡的主板(用于操作)

  • 带有 AMD-V、AMD-Vi 和集成显卡的 CPU

  • 具有 GPU 直通支持的独立显卡(用于直通)

  • 具有两个输入(如 Displayport、D-SUB、DVI、HDMI)的显示器或带显示器的切换盒或两个显示器。

列表IOMMU 支持硬件(列表可能不完整)。

重要的: 为了提高客户机的生产力,请在额外的物理磁盘上安装客户机操作系统(直通解决方案)。此外,您还需要 8GB内存为了操作系统(操作系统)和 8GB RAM 用于客户机,16GB RAM 可能会显著增加您的HDD 的或者SSD性能和寿命。

必需步骤

步骤1。使能够硬件辅助虚拟化在里面BIOS

  • 对于基于英特尔的系统,启用英特尔虚拟化技术 (VT-x) 和英特尔 VT-D 技术

  • 对于基于 AMD 的系统,启用 SVM 模式。

第2步。将 BIOS 设置为使用集成显卡作为主启动设备

注意力!如果您使用专为直通 PCI-Express 图形设备设计的系统启动系统,则会出现错误代码 43。

步骤3.检查IO管理单元支持您的 CPU

对于 AMD 处理器:

$ cat /proc/cpuinfo | grep --color svm

对于 Intel 处理器:

$ cat /proc/cpuinfo | grep --color vmx

您应该看到突出显示的文本 svm 或 vmx。

步骤4。启用 IOMMU

$ sudo nano /etc/default/grub

将以下选项添加到 GRUB_CMDLINE_LINUX_DEFAULT=""

对于 AMD 处理器:

amd_iommu=on kvm.ignore_msrs=1

对于 Intel 处理器:

intel_iommu=on kvm.ignore_msrs=1

步骤 5.更新 GRUB

$ sudo grub-mkconfig -o /boot/grub/grub.cfg

步骤6.重新启动系统

步骤 7.检查 IOMMU 是否已启用

$ sudo dmesg | grep -i -e DMAR -e IOMMU

您应该会看到如下消息:

[    0.123456] pci 0000:09:00.0: Adding to iommu group 1
[    0.234567] pci 0000:0a:00.0: Adding to iommu group 2
[    0.345678] DMAR: Intel(R) Virtualization Technology for Directed I/O

步骤8.查找您的设备

$ lspci -nnk

您应该看到如下文本:

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU117 [GeForce GTX 1650] [10aa:10bb] (rev a1) (prog-if 00 [VGA controller])
    Subsystem: Micro-Star International Co., Ltd. [MSI] TU117 [GeForce GTX 1650] [0101:a1a1]
    Flags: bus master, fast devsel, latency 0, IRQ 151, IOMMU group 1
    Memory at de000000 (32-bit, non-prefetchable) [size=16M]
    Memory at c0000000 (64-bit, prefetchable) [size=256M]
    Memory at d0000000 (64-bit, prefetchable) [size=32M]
    I/O ports at e000 [size=128]
    Expansion ROM at 000c0000 [disabled] [size=128K]
    Capabilities: <access denied>
    Kernel driver in use: nouveau
    Kernel modules: nvidiafb, nouveau

01:00.1 Audio device [0403]: NVIDIA Corporation Device [01cc:01ee] (rev a1)
    Subsystem: Micro-Star International Co., Ltd. [MSI] Device [0202:a2a2]
    Flags: bus master, fast devsel, latency 0, IRQ 17, IOMMU group 1
    Memory at df080000 (32-bit, non-prefetchable) [size=16K]
    Capabilities: <access denied>
    Kernel driver in use: snd_hda_intel
    Kernel modules: snd_hda_intel

如果您看到如下文本“正在使用的内核驱动程序:nvidia”:

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU117 [GeForce GTX 1650] [10aa:10bb] (rev a1)
    Subsystem: Micro-Star International Co., Ltd. [MSI] TU117 [GeForce GTX 1650] [0101:a1a1]
    Kernel driver in use: nvidia
    Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
01:00.1 Audio device [0403]: NVIDIA Corporation Device [01cc:01ee] (rev a1)
    Subsystem: Micro-Star International Co., Ltd. [MSI] Device [0202:a2a2]
    Kernel driver in use: snd_hda_intel
    Kernel modules: snd_hda_intel

您的系统使用 NVIDIA所有权驱动程序。您需要删除所有旧视频驱动程序。以下是删除所有旧视频驱动程序并重新安装 nouveau 的方法:

$ sudo nvidia-settings --uninstall
$ sudo apt-get remove --purge nvidia*
$ sudo apt-get remove --purge xserver-xorg-video-nouveau
$ sudo apt-get remove --purge xserver-xorg-video-nv
$ sudo apt-get install nvidia-common
$ sudo apt-get install xserver-xorg-video-nouveau
$ sudo apt-get install xserver-xorg-video-all
$ sudo apt-get install --reinstall libgl1-mesa-glx libgl1-mesa-dri
$ sudo apt-get install --reinstall xserver-xorg-core
$ sudo dpkg-reconfigure xserver-xorg

或者运行以下命令:

$ software-properties-gtk --open-tab=4

选择选项“X.Org X 服务器 - 来自 xserver-xorg-video-nouveau 的 Nouveau 显示驱动程序(开源)”

运行自动删除:

$ sudo apt autoremove

然后重新启动系统并重复步骤 8。

步骤 9.创建一个名为 vfio.conf 的新文件

$ sudo nano /etc/modprobe.d/vfio.conf

在 STEP 8 中添加以下带有设备 ID 的行:

blacklist nouveau
blacklist snd_hda_intel
options vfio-pci ids=10aa:10bb,01cc:01ee

步骤 10.更新现有的 initramfs

$ sudo update-initramfs -u

步骤11。重新启动系统

步骤12。确保一切正常

$ lspci -nnk

您应该看到如下所示的文本,文本中不应出现“正在使用的内核驱动程序:nouveau”和“正在使用的内核驱动程序:snd_hda_intel”这两行:

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU117 [GeForce GTX 1650] [10aa:10bb] (rev a1)
    Subsystem: Micro-Star International Co., Ltd. [MSI] TU117 [GeForce GTX 1650] [0101:a1a1]
    Kernel modules: nvidiafb, nouveau
01:00.1 Audio device [0403]: NVIDIA Corporation Device [01cc:01ee] (rev a1)
    Subsystem: Micro-Star International Co., Ltd. [MSI] Device [0202:a2a2]
    Kernel modules: snd_hda_intel

步骤13。使用虚拟管理器创建一个新的客户机

安装虚拟机

$ sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

添加用户

注意:对于较新版本的 Linux 内核,请尝试 libvirt。

$ sudo adduser username libvirtd

如果您遇到组问题“adduser:组'libvirtd'不存在。”请尝试:

$ sudo addgroup libvirtd

安装 VirtManager

$ sudo apt-get install virt-manager

使用自定义配置创建新的客户机。

$ virt-manager

如果收到“确保libvirtd守护进程正在运行”错误,请重新启动并重试。

图片 01

图片 02

图片 03

图片 04

可选:要在其他物理磁盘上安装客户操作系统,请取消选中“为此虚拟机启用存储”复选框

图片 05

图片 06

你必须:

  1. 选择“Q35”芯片组和“UEFI
    x86_64:/usr/share/OVMF/OVMF_CODE_4M.ms.fd”固件或类似固件

图片 07

  1. 添加用于 GPU 直通的 PCI 主机设备

图片 08

图片 09

图片 10

可选:要在其他物理磁盘上安装客户机操作系统,请选择主机设备 - 物理 SSD M.2 或 SATA 3.0 PCIe Gen3 x1 卡(用于 SATA SSD/HDD)

  1. 设置 QXL 视频驱动程序和 SPICE 客户端以使用“地址”
    监听类型进行显示。

图片 11

图片 12

图片 13

步骤14。编辑来宾机器

$ virsh list --all

$ sudo virsh edit YourGuestMachineName

添加以下行:

<vendor_id state='on' value='1234567890ab'/>
<kvm>
 <hidden state='on'/>
</kvm>
<ioapic driver='kvm'/>

最终结果应该是这样的:

<features>
  <acpi/>
  <apic/>
  <hyperv>
    <relaxed state='on'/>
    <vapic state='on'/>
    <spinlocks state='on' retries='8191'/>
    <vendor_id state='on' value='1234567890ab'/>
  </hyperv>
  <kvm>
    <hidden state='on'/>
  </kvm>
  <vmport state='off'/>
  <ioapic driver='kvm'/>
</features>

编辑完成后,使用 CTRL+x 保存更改。

步骤15。运行客户机

可选:如果您要将客户操作系统安装在额外的物理磁盘上,请启动客户机并在适当的时候按下 BIOS 输入键 F2。将物理磁盘设备设置为可启动。


笔记

如果您想使用 PCI-Express 图形设备作为主启动设备,请执行以下操作:

$ sudo nano /etc/modprobe.d/vfio.conf

将以下行更改为 STEP 8 中的设备 ID:

blacklist nouveau
blacklist snd_hda_intel
options vfio-pci ids=10aa:10bb,01cc:01ee

和:

#blacklist nouveau
#blacklist snd_hda_intel
#options vfio-pci ids=10aa:10bb,01cc:01ee

更新现有的 initramfs

$ sudo update-initramfs -u

重新启动系统并将 BIOS 设置为使用 PCI-Express 图形设备作为主启动设备。

也可以看看

指导:在另一个分区上创建 qcow2 磁盘映像文件。

故障排除

问题:模拟器可能没有路径“/*.qcow2”的搜索权限

行动:

  • 使用 sudo 权限运行 virt-manager 或使用 chown、chgrp、chmod 命令进行修复。请参阅此处的步骤指导

问题:启动域时出错:无法访问存储文件 '/*.qcow2' (as uid:10101, gid:101): 权限被拒绝

行动:

  • 使用 sudo 权限运行 virt-manager 或使用 chown、chgrp、chmod 命令进行修复。请参阅此处的步骤指导

问题:重新启动系统后不显示 Gnome 登录屏幕。

行动:

  • 您的系统可能使用集成显卡启动,而 vaio.conf 文件缺失、为空、包含不正确的文本或步骤 9 中描述的行以 # 字符开头。检查步骤 9。

问题:客户机启动正常,但我看到 PCI-Express 图形设备的输出出现黑屏。

行动:

  • 检查电缆连接和显示器的设置

  • 检查步骤 1、2、14

  • 在 Windows 上安装正确的设备驱动程序

  • 在 Windows 上卸载并重新安装设备驱动程序

  • 在 Windows 上更新设备驱动程序


问题:使用 USB 重定向器时,网络摄像头、USB 音频接口、USB HDD/SSD 等设备无法正常工作。

行动:

  • 使用额外的 PCIe USB 卡,必须支持 IOMMU(PCIe 卡直通解决方案)。

问题:搭载 Windows 10 操作系统的客户机出现间歇性声音并伴有噼啪声。

行动:

  • 使用通用内核
  • 在 Ubuntu 中禁用 WiFi
  • 为了提高客户机的性能,请将 Ubuntu 操作系统上的 CPU 调节器设置为“性能”
  • 如果您使用的是内置声卡的 HDA (ICH9) 或 HDA (ICH6) 型号,请将 vCPU 数量设置为逻辑主机 CPU 数量的一半
  • 如果你使用额外的PCIe第三代 x4USB3.2 卡(PCIe 卡直通解决方案)带有 USB 音频接口,参考物理 CPU 拓扑手动设置处理器拓扑(插槽、核心、线程)
  • 如果您使用带有 USB 音频接口的附加 PCIe Gen3 x4 USB 3.2 卡(PCIe 卡直通解决方案),请尝试不同的音频接口驱动程序版本
  • 如果操作系统 Ubuntu 已转换为 Ubuntu Studio,请尝试恢复所有更改
  • 安装干净的 Ubuntu 操作系统并重试。

问题:我的客户机器冻结,因此我的 USB 音频接口崩溃(使用额外的 PCIe Gen3 x4 USB 3.2 卡的直通解决方案)。

行动:

  • 确保根目录有大约 8 GB 的可用空间

  • 从您的客户机中删除未使用的虚拟硬件(声音、网络、控制器、通道、USB 重定向)

  • 在虚拟机管理器中,转到“编辑”>“连接详细信息”,然后通过“虚拟网络”选项卡取消选中“启动时”

启动时

  • 重新启动系统

  • 在 Ubuntu 中禁用 WiFi

  • 将 Ubuntu 操作系统上的 CPU 调速器设置为“性能”

功率分布


  • 安装调整

虚拟化调优和优化指南

$ sudo apt install tuned
  • 实验性地运行以下命令

(每次启动电脑时都需要这些命令)

$ sudo tuned-adm profile virtual-host && sudo systemctl enable tuned && tuned-adm active

对于 Ubuntu 23.04、23.10

  • 运行以下命令

$ virt-manager

$ htop -t -F libvirtd

结果看起来应该是这样的:

  [Main] [I/O]
    PID△USER       PRI  NI  VIRT   RES   SHR S  CPU% MEM%   TIME+  Command
    976 root        20   0 1602M 36044 22348 S   0.0  0.2  0:01.32 ├─ /usr/sbin/libvirtd --timeout 120
    .
    .
    999 root        20   0 1602M 36044 22348 S   0.0  0.2  0:00.00 │  ├─ /usr/sbin/libvirtd --timeout 120
   1001 root        20   0 1602M 36044 22348 S   0.0  0.2  0:00.00 │  └─ /usr/sbin/libvirtd --timeout 120
   5905 username    20   0  140M  132M  3584 R  50.0  0.0  0:00.10 │  │     └─ htop -t -F libvirt
  • 使用 libvirtd 的最低 PID 值运行以下命令

$ sudo renice -20 -g <PID>

$ sudo chrt -a -r -p 99 <PID>
  • 运行以下命令

$ htop -t -F libvirtd

最终结果应该是这样的:

  [Main] [I/O]
    PID△USER       PRI  NI  VIRT   RES   SHR S  CPU% MEM%   TIME+  Command
    976 root        RT -20 1602M 36044 22348 S   0.0  0.2  0:01.32 ├─ /usr/sbin/libvirtd --timeout 120
    .
    .
    999 root        RT -20 1602M 36044 22348 S   0.0  0.2  0:00.00 │  ├─ /usr/sbin/libvirtd --timeout 120
   1001 root        RT -20 1602M 36044 22348 S   0.0  0.2  0:00.00 │  └─ /usr/sbin/libvirtd --timeout 120
   5905 username    20   0  140M  132M  3584 R  50.0  0.0  0:00.10 │  │     └─ htop -t -F libvirt
  • 运行您的客户机

对于 Ubuntu 22.04 LTS、22.10

注意:也许在 Ubuntu 22.04 LTS、22.10 更新之后,该过程将变得类似于 Ubuntu 23.04 或 23.10 的过程。

  • 运行您的客户机

  • 运行以下命令


$ htop -t

结果看起来应该是这样的:

  [Main] [I/O]
    PID▽USER       PRI  NI  VIRT   RES   SHR S  CPU% MEM%   TIME+  Command
      2 root        20   0     0     0     0 S   0.0  0.0  0:00.00 kthreadd
  10011 root        20   0     0     0     0 S   0.0  0.0  0:01.17 ├─ 9998
  10005 root        20   0     0     0     0 S   0.0  0.0  0:00.11 ├─ kvm-nx-lpage-recovery-9998
  10004 root         0 -20     0     0     0 I   0.0  0.0  0:00.00 └─ kvm
      1 root        20   0  166M 13300  7344 S   0.0  0.1  0:04.02 init
   9998 libvirt-qe  20   0 11.1G 8371M 11796 S  93.0 52.7  2h35:34 ├─ qemu-system-x86_64 -name guest=username,debug-threads=on -S -object {"qom-type":"secret","
  18086 libvirt-qe  20   0 11.1G 8371M 11796 S   0.0 52.7  0:00.00 │  ├─ worker
  10012 libvirt-qe  20   0 11.1G 8371M 11796 S   0.0 52.7  0:20.20 │  ├─ SPICE Worker
  10010 libvirt-qe  20   0 11.1G 8371M 11796 S   9.3 52.7 18:42.97 │  ├─ CPU 3/KVM
  10009 libvirt-qe  20   0 11.1G 8371M 11796 S  27.9 52.7 18:31.20 │  ├─ CPU 2/KVM
  10008 libvirt-qe  20   0 11.1G 8371M 11796 R  18.6 52.7 25:01.04 │  ├─ CPU 1/KVM
  10007 libvirt-qe  20   0 11.1G 8371M 11796 R   9.3 52.7  1h08:06 │  ├─ CPU 0/KVM
  10006 libvirt-qe  20   0 11.1G 8371M 11796 S   0.0 52.7  0:25.50 │  ├─ IO mon_iothread
  10002 libvirt-qe  20   0 11.1G 8371M 11796 S   0.0 52.7  0:00.11 │  └─ qemu-system-x86_64 -name guest=username,debug-threads=on -S -object {"qom-type":"secret
   9990 root        20   0 80140 13292 11496 S   0.0  0.1  0:00.00 ├─ virtlogd
   1644 username    20   0 19456 10288  7352 S   0.0  0.1  0:00.58 ├─ systemd --user
   9903 username    20   0  937M 89440 39952 S   0.0  0.5  0:40.61 │  └─ python3 /usr/bin/virt-manager
   9908 username    20   0  937M 89440 39952 S   0.0  0.5  0:07.74 │     ├─ virt-manager
   9907 username    20   0  937M 89440 39952 S   0.0  0.5  0:00.00 │     ├─ dconf worker
   9906 username    20   0  937M 89440 39952 S   0.0  0.5  0:00.00 │     ├─ gdbus
   9904 username    20   0  937M 89440 39952 S   0.0  0.5  0:00.00 │     └─ gmain
    960 root        20   0 1526M 34408 19836 S   0.0  0.2  0:22.20 └─ libvirtd
  10001 root        20   0 1526M 34408 19836 S   0.0  0.2  0:08.64    ├─ vm-username
   1014 root        20   0 1526M 34408 19836 S   0.0  0.2  0:00.06    ├─ udev-event
    990 root        20   0 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ gdbus
    989 root        20   0 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ gmain
    986 root        20   0 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ rpc-admin
    985 root        20   0 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ rpc-admin
    984 root        20   0 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ rpc-admin
    983 root        20   0 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ rpc-admin
    982 root        20   0 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ rpc-admin
    975 root        20   0 1526M 34408 19836 S   0.0  0.2  0:00.22    ├─ prio-rpc-libvir
    974 root        20   0 1526M 34408 19836 S   0.0  0.2  0:00.22    ├─ prio-rpc-libvir
    973 root        20   0 1526M 34408 19836 S   0.0  0.2  0:00.23    ├─ prio-rpc-libvir
    972 root        20   0 1526M 34408 19836 S   0.0  0.2  0:00.21    ├─ prio-rpc-libvir
    971 root        20   0 1526M 34408 19836 S   0.0  0.2  0:00.23    ├─ prio-rpc-libvir
    970 root        20   0 1526M 34408 19836 S   0.0  0.2  0:02.15    ├─ rpc-libvirtd
    969 root        20   0 1526M 34408 19836 S   0.0  0.2  0:02.11    ├─ rpc-libvirtd
    968 root        20   0 1526M 34408 19836 S   0.0  0.2  0:02.19    ├─ rpc-libvirtd
    967 root        20   0 1526M 34408 19836 S   0.0  0.2  0:02.09    ├─ rpc-libvirtd
    966 root        20   0 1526M 34408 19836 S   0.0  0.2  0:02.04    └─ rpc-libvirtd

  • 为所有根进程设置 NI(nice)值 -5(每次启动或重新启动操作系统时都需要此项)

$ sudo renice -5 -u root
  • 为 qemu-system-x86_64 (9998)、virt-manager、libvirtd、kvm-nx-lpage-recovery-****、kvm、virtlogd 命令设置 NI(nice)值 -20(每次启动客户机时都需要此项)

显示命令 qemu-system-x86_64 (9998)、virt-manager、libvirtd 的所有正在运行的线程

example: $ sudo ps -Ljf <PID>
$ ps -Ljf 9998 9903 960

对于命令 qemu-system-x86_64 (9998)、virt-manager、libvirtd 运行:

example: $ sudo renice -20 -g <PGID>
$ sudo renice -20 -g 9997 9903 960

对于命令 kvm-nx-lpage-recovery-9998、kvm、virtlogd 运行:

example: $ sudo renice -20 <PID>
$ sudo renice -20 10005 10004 9990
  • 将命令 kvm-nx-lpage-recovery-9998、kvm、qemu-system-x86_64 (9998)、virtlogd、virt-manager、libvirtd 设置为实时(每次启动客户机时都需要此项)

$ sudo chrt -a -r -p 99 10005
$ sudo chrt -a -r -p 99 10004
$ sudo chrt -a -r -p 99 9998
$ sudo chrt -a -r -p 99 9990
$ sudo chrt -a -r -p 99 9903
$ sudo chrt -a -r -p 99 960
  • 运行 htop

$ htop -t

最终结果应该是这样的:

  [Main] [I/O]
    PID▽USER       PRI  NI  VIRT   RES   SHR S  CPU% MEM%   TIME+  Command
      2 root        20  -5     0     0     0 S   0.0  0.0  0:00.00 kthreadd
  10011 root        RT -20     0     0     0 S   0.0  0.0  0:01.17 ├─ 9998
  10005 root        RT -20     0     0     0 S   0.0  0.0  0:00.11 ├─ kvm-nx-lpage-recovery-9998
  10004 root        RT -20     0     0     0 I   0.0  0.0  0:00.00 └─ kvm
      1 root        20  -5  166M 13300  7344 S   0.0  0.1  0:04.02 init
   9998 libvirt-qe  RT -20 11.1G 8371M 11796 S  93.0 52.7  2h35:34 ├─ qemu-system-x86_64 -name guest=username,debug-threads=on -S -object {"qom-type":"secret","
  18086 libvirt-qe  RT -20 11.1G 8371M 11796 S   0.0 52.7  0:00.00 │  ├─ worker
  10012 libvirt-qe  RT -20 11.1G 8371M 11796 S   0.0 52.7  0:20.20 │  ├─ SPICE Worker
  10010 libvirt-qe  RT -20 11.1G 8371M 11796 S   9.3 52.7 18:42.97 │  ├─ CPU 3/KVM
  10009 libvirt-qe  RT -20 11.1G 8371M 11796 S  27.9 52.7 18:31.20 │  ├─ CPU 2/KVM
  10008 libvirt-qe  RT -20 11.1G 8371M 11796 R  18.6 52.7 25:01.04 │  ├─ CPU 1/KVM
  10007 libvirt-qe  RT -20 11.1G 8371M 11796 R   9.3 52.7  1h08:06 │  ├─ CPU 0/KVM
  10006 libvirt-qe  RT -20 11.1G 8371M 11796 S   0.0 52.7  0:25.50 │  ├─ IO mon_iothread
  10002 libvirt-qe  RT -20 11.1G 8371M 11796 S   0.0 52.7  0:00.11 │  └─ qemu-system-x86_64 -name guest=username,debug-threads=on -S -object {"qom-type":"secret
   9990 root        RT -20 80140 13292 11496 S   0.0  0.1  0:00.00 ├─ virtlogd
   1644 username    20   0 19456 10288  7352 S   0.0  0.1  0:00.58 ├─ systemd --user
   9903 username    RT -20  937M 89440 39952 S   0.0  0.5  0:40.61 │  └─ python3 /usr/bin/virt-manager
   9908 username    RT -20  937M 89440 39952 S   0.0  0.5  0:07.74 │     ├─ virt-manager
   9907 username    RT -20  937M 89440 39952 S   0.0  0.5  0:00.00 │     ├─ dconf worker
   9906 username    RT -20  937M 89440 39952 S   0.0  0.5  0:00.00 │     ├─ gdbus
   9904 username    RT -20  937M 89440 39952 S   0.0  0.5  0:00.00 │     └─ gmain
    960 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:22.20 └─ libvirtd
  10001 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:08.64    ├─ vm-username
   1014 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:00.06    ├─ udev-event
    990 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ gdbus
    989 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ gmain
    986 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ rpc-admin
    985 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ rpc-admin
    984 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ rpc-admin
    983 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ rpc-admin
    982 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:00.00    ├─ rpc-admin
    975 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:00.22    ├─ prio-rpc-libvir
    974 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:00.22    ├─ prio-rpc-libvir
    973 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:00.23    ├─ prio-rpc-libvir
    972 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:00.21    ├─ prio-rpc-libvir
    971 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:00.23    ├─ prio-rpc-libvir
    970 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:02.15    ├─ rpc-libvirtd
    969 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:02.11    ├─ rpc-libvirtd
    968 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:02.19    ├─ rpc-libvirtd
    967 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:02.09    ├─ rpc-libvirtd
    966 root        RT -20 1526M 34408 19836 S   0.0  0.2  0:02.04    └─ rpc-libvirtd

使用“q”停止

  • 如果问题未完全解决,请尝试使用较少的 CPU 核心。参考物理 CPU 拓扑,将核心数设置为一半。例如,Intel® Core™ i5-6600 处理器有 4 个核心。要使用一半的核心数,请将 CPU 拓扑设置为 1 个插槽、2 个核心、1 个线程。
  • 增加音频接口的 ASIO 驱动程序的缓冲区大小。

问题:访问 qcow2 磁盘映像(虚拟磁盘)时 CPU 负载过重。使用样本库的虚拟机上出现间歇性声音和噼啪声。

行动:

  • 将虚拟磁盘缓存模式设置为不安全
  • 直通额外的物理 SSD M.2 或直通额外的 SATA 3.0 PCIe Gen3 x1 卡用于 SATA SSD/HDD。

问题:在 Windows 10 系统上,USB 设备(HDD/SSD、网络摄像头、Midi 键盘)几分钟不活动后就会停止响应。

行动:

  • 通过电源选项禁用 USB 选择性暂停

USB 选择性暂停

  • 防止 Windows 10 操作系统通过设备管理器关闭通用超高速 USB 集线器、通用 USB 集线器、USB 根集线器设备以节省电量。

USB 集线器电源管理


参考


答案2

安装了 NVIDIA 专有驱动程序的 Ubuntu GPU 直通指南

本指南在 Ubuntu 23.10、24.04 LTS 上进行了测试,采用了 NVIDIA 专有驱动程序和以下系统配置:

  • MSI® 主板 Z170A
  • 英特尔® 酷睿™ i5-6600 处理器
  • GeForce GTX 1650 AERO ITX 4G OC。

注意力!本指南仅适用于基于 Intel CPU 的系统。在开始系统更改之前,请仔细阅读文本。

本指南所需的硬件规格

  • 带有集成显卡的主板(用于操作)

  • 带有 VT-x、VT-d 和处理器显卡的英特尔 CPU

  • 独立 NVIDIA 显卡,支持 GPU 直通(用于直通)

  • 具有两个输入(如 Displayport、D-SUB、DVI、HDMI)的显示器或带显示器的切换盒或两个显示器。

必需步骤

步骤1。在 BIOS 中启用硬件辅助虚拟化

启用英特尔虚拟化技术 (VT-x) 和英特尔 VT-D 技术

第2步。将 BIOS 设置为使用集成显卡作为主启动设备(重要)

步骤3.检查您的英特尔 CPU 是否支持 IOMMU

$ cat /proc/cpuinfo | grep --color vmx

您应该看到突出显示的文本 vmx。

步骤4。启用 IOMMU

$ sudo nano /etc/default/grub

将以下选项添加到 GRUB_CMDLINE_LINUX_DEFAULT="":

intel_iommu=on kvm.ignore_msrs=1

步骤 5.更新 GRUB

$ sudo grub-mkconfig -o /boot/grub/grub.cfg

步骤6.重新启动系统

步骤 7.检查 IOMMU 是否已启用

$ sudo dmesg | grep -i -e DMAR -e IOMMU

您应该会看到如下消息:

[    0.123456] pci 0000:09:00.0: Adding to iommu group 1
[    0.234567] pci 0000:0a:00.0: Adding to iommu group 2
[    0.345678] DMAR: Intel(R) Virtualization Technology for Directed I/O

步骤8.安装 NVIDIA 专有驱动程序

$ software-properties-gtk --open-tab=4

选择选项“使用来自 nvidia-driver-XXX 的 NVIDIA 驱动程序元包(专有,已测试)”

步骤 9.安装 nvidia-prime

$ sudo apt install nvidia-prime

步骤 10.重新启动系统

步骤11。将集成显卡设置为主要

$ sudo prime-select intel

步骤12。检查集成显卡是否设置为主显卡

$ sudo prime-select query

你必须看到“情报”

步骤13。重新启动系统

步骤14。使用 VirtManager 创建新的客户机

参见步骤 13指南:安装了 NOUVEAU 驱动程序的 Ubuntu GPU 直通指南

步骤15。编辑来宾机器

参见步骤 14指南:安装了 NOUVEAU 驱动程序的 Ubuntu GPU 直通指南

步骤16。运行客户机


笔记

如果您想使用 NVIDIA 图形设备作为主启动设备,请执行以下操作:

将 NVIDIA 图形设备设置为主要

$ sudo prime-select nvidia

检查 NVIDIA 图形设备是否设置为主要

$ sudo prime-select query

你必须看到“nvidia”

重新启动系统

$ sudo reboot

故障排除

请参阅故障排除指南:安装了 NOUVEAU 驱动程序的 Ubuntu GPU 直通指南


参考

相关内容