介绍
Intel SR-IOV vGPU是一种硬件虚拟化技术,它允许多个虚拟机共享单个物理GPU,而不会降低性能。SR-IOV定义了一种标准方法,通过将设备分区为多个虚拟功能来共享物理设备功能。每个虚拟功能直接分配给一个虚拟机,从而实现了接近本地性能的虚拟机。Intel Graphics SR-IOV是Intel的最新图形虚拟化技术,它允许多个虚拟机共享单个物理GPU,从而实现了在虚拟机中的GPU加速工作负载。
Intel第12代CPU是Intel的最新一代桌面处理器,也称为Alder Lake。它采用了全新的效能混合式架构,结合效能核心和效率核心,让游戏、生产力和创作更上层楼。第12代Intel Core桌面型处理器提供了全新的效能混合式架构,结合效能核心和效率核心,让游戏、生产力和创作更上层楼。
本文介绍了在12代Intel i5-12400 机器上配置 SR-IOV vGPU的过程。
第一步:安装Proxmox 7.4.1
1)下载 Proxmox 7.4 (proxmox-ve_7.4-1.iso)
https://mirrors.ustc.edu.cn/proxmox/iso/
2)使用Ventoy制作启动U盘。
Ventoy作为新一代U盘启动工具,不需要反复对U盘进行格式化。只需要把ISO拷贝到Ventoy制作好的U盘上即可。简化了启动U盘的制作。并且可以实现一个U盘实现多个系统的启动。
把 Proxmox的ISO文件拷贝Ventory制作的U盘根目录即可。
第二步:更新源,PVE启用Linux内核版本 6.1
更新源和安装 PVE kernel 6.1的过程,已经制作成了一键运行脚本。
脚本内容如下:
#!/bin/sh
# Author: DoraCloud Technology Ltd.co
#
# Date: 2023/05/07
#
# DoraCloud for Proxmox Enable vGPU
# Phase 1: update source to mirrors.ustc.edu.cn
cp /etc/apt/sources.list /etc/apt/sources.list.backup
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list
mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
CODENAME=`cat /etc/os-release |grep PRETTY_NAME |cut -f 2 -d "(" |cut -f 1 -d ")"`
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian $CODENAME pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
#更新
apt update -y
apt dist-upgrade -y
apt install pve-kernel-6.1 -y
reboot
你也可以在 PVE中,直接通过如下命令在线下载运行脚本。
curl -o- http://vdi.doracloud.cn:9000/software/sriov01.sh |bash
脚本运行后,会重启PVE服务器,重启后,PVE的内核切换成了 6.1。 可以通过 uname -r 验证内核已经切换。
root@db12:/var/lib/vz/dump# uname -r
6.1.15-1-pve
第三步:安装 i915-sriov dkms模块,启用iommu,配置7个VF
重启后,执行如下脚本。脚本内容包括: 安装 i915-sriov-dkms 模块。 启用iommu。配置 SR-IOV的VF为7个。
脚本执行后,重启服务器。
#!/bin/sh
# Author: DoraCloud Technology Ltd.co
#
# Date: 2023/05/07
#
# Enable IO-MMU on PVE Server
apt update && apt install pve-headers-$(uname -r)
apt install git dkms build-* unzip -y
wget http://vdi.doracloud.cn:9000/software/i915-sriov-dkms-6.1.tar.gz
tar -zxvf i915-sriov-dkms-6.1.tar.gz -C /usr/src
dkms install -m i915-sriov-dkms -v 6.1
dkms status
# 复制如下脚本,启用IO-MMU
echo ""
echo "********************************************"
echo "*** Enable IO-MMU on proxmox host ***"
echo "********************************************"
# /etc/default/grub 的GRUB_CMDLINE_LINUX_DEFAULT,增加 intel_iommu=on iommu=pt
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on i915.enable_guc=3 i915.max_vfs=7"/g' /etc/default/grub
echo ""
echo " Update grub .... "
update-grub
update-initramfs -u
pve-efiboot-tool refresh
echo ""
echo " Install sysfsutils ,set sriov_numvfs=7"
apt install sysfsutils -y
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
echo ""
echo " Please Verify SR-IOV by lspci |grep VGA after reboot ...."
reboot
上述脚本,也可以在线运行。通过如下一行命令。
curl -o- http://vdi.doracloud.cn:9000/software/sriov02.sh |bash
服务器重启后,通过 lspci |grep VGA 命令确认 vgpu 已经启用。
root@db12:/var/lib/vz/dump# lspci |grep VGA
00:02.0 VGA compatible controller: Intel Corporation Device 4692 (rev 0c)
00:02.1 VGA compatible controller: Intel Corporation Device 4692 (rev 0c)
00:02.2 VGA compatible controller: Intel Corporation Device 4692 (rev 0c)
00:02.3 VGA compatible controller: Intel Corporation Device 4692 (rev 0c)
00:02.4 VGA compatible controller: Intel Corporation Device 4692 (rev 0c)
00:02.5 VGA compatible controller: Intel Corporation Device 4692 (rev 0c)
00:02.6 VGA compatible controller: Intel Corporation Device 4692 (rev 0c)
00:02.7 VGA compatible controller: Intel Corporation Device 4692 (rev 0c)
总结:12代CPU启用 SR-IOV的vGPU,只需要执行两个命令:
PVE安装后,执行如下命令,等待重启。
curl -o- http://vdi.doracloud.cn:9000/software/sriov01.sh |bash
然后执行如下命令,等待自动重启。
curl -o- http://vdi.doracloud.cn:9000/software/sriov02.sh |bash
最后使用 lspci |grep VGA 验证 vGPU已经启用。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: kubernetes(k8s)大白学习02:容器和docker基础、使用、架构学习
一、什么是容器 容器简介 简单说:容器(container)就是计算机上的一个沙盒进程,它与计算机上的所有其它进程相隔离。 这种隔离是怎么做到的呢?它利用了内核提供的 namespace 和 cgroup 这 2 种技术。这些技术能力在 Linux 中已经存在…