Intel vGPU技术GVT-g与kvmgt实现分析和实践 📅 发布时间:2026/7/12 7:37:39 👁️ 浏览次数: Intel GVT-g KVMGTIntel GVT-g是Intel图形虚拟化技术(IntelGraphicsVirtualizationTechnology-graphics)的缩写它是一种硬件辅助的GPU虚拟化解决方案允许将一个Intel集成显卡(Integrated Graphics Processor, IGP)虚拟化为多个虚拟GPU(vGPU),供多个虚拟机同时使用。而KVMGT则是 GVT-g技术在KVM虚拟化平台上的具体实现它是GVT-g框架与KVM/VFIO/MDEV子系统的集成模块通俗点儿说就是这个模块共同作用生的孩子使KVM虚拟机能够使用GVT-g创建的虚拟GPU。本文将在支持GVT‑G集成显卡技术的Intel CPU上搭建演示环境以实现虚拟机和物理机共享核显的目标。Linux GVT-gKVMGT架构图软件分层架构Intel vGPU测试环境搭建英特爾持續推動Intel®圖形處理器上的圖形虛擬化技術。最新的技術是單根 IO 虛擬化SR-IOV取代了先前的 Intel® 圖形虛擬化技術 –gGVT-g。环境信息测试环境使用的Graphics 620是支持GVT-g的,Intel i7-8665U属于第INTEL 第八代处理器家族根据INTEL官方资料第八代处理器是明确支持GVT-G技术的不支持SR-IOV。https://www.intel.com.tw/content/www/tw/zh/support/articles/000093216/graphics/processor-graphics.html另外需要确保LINUX OS打开了这些配置项确保GVT-G的驱动存在CONFIG_DRM_I915_GVT_KVMGTy CONFIG_DRM_I915_GVTyDisable IOMMU情况下MPT(Mediated Pass-Through)核显共享MPT和设备PT模式还是有显著区别的设备直通PT是全硬件访问路径而MPT模式需要通过软件曾MDEV作中介所以本质上vGPU对存储的访问可以被MDEV钩住可以在不启用IOMMU的情况下实现设备MPT。下面关闭IOMMU尝试虚拟机和物理机共享核显。关闭INTEL IOMMU并启用GVT-Gi915.enable_gvt1GRUB_CMDLINE_LINUX_DEFAULTquiet splash intel_iommuoff i915.enable_gvt1安装kvmgt.kosriovpc:~$ sudo modprobe kvmgt sriovpc:~$ lsmod|grep kvmgt kvmgt 421888 0 mdev 24576 1 kvmgt vfio 73728 2 kvmgt,vfio_iommu_type1 kvm 1445888 2 kvmgt,kvm_intel i915 4837376 24 kvmgt之后查看mdev_supported_types目录已经存在创建vGPUecho 0212b594-20d9-11f1-98e0-6bbe8ef005ee /sys/devices/pci0000:00/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_8/create此时MDEV VGPU设备会出现MPT透传到虚拟机sudo /home/czl/Workspace/svm-qemu/install/new/qemu-system-x86_64 -enable-kvm -m 4096 -drive file./test-vm-2.qcow2,formatqcow2 -device vfio-pci,sysfsdev/sys/bus/mdev/devices/0212b594-20d9-11f1-98e0-6bbe8ef005ee可以看到物理机和虚拟机同时在使用核显vGPU配置空间模拟数据来源于真实的核显所以在虚拟机中的型号和物理机完全一样:因为没有IOMMU所以MDEV创建 VGPU时只生成了一个DUMMY的 IOMMU GROUP和MDEV设备绑定并且由于没有ENABLE IOMMU不需要进行IOVAGPA到HPA的映射所以启动时不会调用iommu_map路径原因是在这里将其切断的,因为VM对应的vfio_iommu的的domain_list为空说明此VM没有任何IOMMU DOMAIN为其服务所以只是将上层发送过来的DMAP MAP请求记录一下之后退出。这个记录在后面VGPU工作过程中会在VGPU访问存储时陷出到HYPERVISOR执行GPA到HPA的翻译时用VGPU访问存储时陷出到HYPERVISOR执行GPA到HPA的翻译的调用堆栈ENABLE IOMMU即便ENABLE IOMMU默认MDEV设备由于没有关联一个所在总线BUS能够访问IOMMU比如PCIE BUS的设备所以仍然没有IOMMU DOMAIN关联MDEV设备仍然不需要IOMMU的服务除非调用mdev_set_iommu_device/mdev_get_iommu_device设置这个支持IOMMU的关联设备否则MDEV不需要 translation IOMMU DOMAIN.总结Enable IOMMU场景下就不在详细展开了过程完全是一样的本文的目的除了记录环境搭建的过程之外重点想引出一个结论硬件直通(PT, Pass-Through)必须依赖IOMMU但是MPT通过Mediated mdev模块实现的 Pass-Through)技术对IOMMU没有依赖当然开启IOMMU更好别的不说IOMMU隔离保证VM之间更安全不是么。参考文档https://www.intel.com.tw/content/www/tw/zh/support/articles/000093216/graphics/processor-graphics.htmlhttps://blog.csdn.net/weixin_29201859/article/details/158442355https://baijiahao.baidu.com/s?id1849564234142398996wfrspiderforpc结束
5款主流网络备份软件对比:功能、预算、适配场景梳理 提到备份,大多数人首先想到的是文件、数据库或应用程序,但对于IT管理员来说,真正的担忧的往往是网络配置。丢失交换机、路由器或防火墙的任意一份配置,都可能导致分支机构离线、安全漏洞暴露或合规审计中断,所有这些麻… 2026/4/24 7:10:33
记录项目基于HAL+STM32+Freertos的天气桌面(暂时就叫这个了)(day1) 简介:主控STM32F103C8T6,元器件ESP01S。主频为72mhz,开启usart1与usart2,usart1用于回传esp01s发送的信息,usart2用于连接esp01s。freertos新建1个任务,大小128*4,1个用于获取心知天气内的数据。… 2026/4/24 8:59:18
答辩 PPT 不用熬:PaperZZ AI PPT 如何让本科生从 “赶工凑页” 到 “从容控场” Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿paperzz - AI PPT制作https://www.paperzz.cc/aiPpt 引言 毕业答辩前的深夜,电脑屏幕的光映在本科生小张疲惫的脸上 —— 论文刚定稿,空白的 PPT 页面还在等着他:要提炼核… 2026/5/17 9:56:11
QR码原理与Python实战:从编码规范到RS纠错深度解析 1. 项目概述:为什么一个二维码生成与解析的Python实践,值得花两小时认真拆解 “二维码”这三个字,今天听起来像空气一样平常——扫码点餐、扫码加好友、扫码领优惠券,几乎每个手机用户每天都要和它打十几次照面。但如果你问一句&a… 2026/7/12 7:36:05
PHP文件包含漏洞实战:从原理到利用与防御 1. 项目概述:一次关于文件包含漏洞的深度实战复盘最近在带新人刷BUUCTF的Web题目,发现很多朋友对“文件包含漏洞”这个概念的理解还停留在“能读文件”的层面,实战中遇到稍微有点变化的题目就无从下手。正好,我们团队内部复盘时&a… 2026/7/12 7:34:04
虚拟机创建逻辑卷 1. 添加硬盘2.制作物理卷#物理卷是LVM 的底层存储载体,可以是整个硬盘、硬盘分区或类似 RAID 的设备#用硬盘分区制作1.查看添加的硬盘设备文件名[rootA ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 10G 0 disk2.分区… 2026/7/12 7:28:00
YOLO11模型C++部署实战:从ONNX导出到NMS后处理全流程解析 1. 项目概述:从模型到产品的最后一公里做AI项目,尤其是目标检测,最让人头疼的往往不是训练模型,而是那句老话:“模型在手,落地发愁”。你辛辛苦苦调参、炼丹,在PyTorch里跑出了漂亮的mAP&#x… 2026/7/12 7:28:00
UE5 3D UI渲染避坑指南:三种方案解决场景遮挡难题 1. 项目概述:3D UI的“穿墙”难题与核心诉求在UE5里做3D UI,最让人头疼的莫过于你精心设计的血条、交互面板或者信息标签,动不动就被场景里的墙壁、角色或者一堆杂物给挡得严严实实。想象一下,你做了一个悬停在角色头顶的3D名字板… 2026/7/12 7:25:59
C++线程池实战:从原理到实现,解决高并发性能瓶颈 1. 项目概述最近在重构一个老项目的后台服务,性能瓶颈卡在了频繁创建和销毁线程上。每次来一个请求就new std::thread,请求处理完就join,这种模式在低并发时还行,一旦QPS上来,线程创建和销毁的开销直接让CPU在上下文切… 2026/7/12 7:23:58
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/12 0:01:13
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/12 0:01:13
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/12 0:03:14
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/12 0:01:13
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/12 0:01:13
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/12 0:03:14