KVMGT in Linux 4.10 – 流媒体服务器、游戏、车载大屏等场景的应用技术预研

By | 2017年4月12日

UPDATE: 2018-04,现在KVMGT相关upstream基本已全部进入master,可以参考GVTg_Setup_Guide或者GVTd_Setup_Guide,如果需要本地显示参考DMA_BUF User Guide

UPDATE: 2017-08-08,Intel有了X系列处理器i9,这个核数肯定适合跑桌面了。

UPDATE:鉴于KVMGT的产品化集成难度较之前有所降低,所以最近有很多人都打算搞搞集成,那我先来集成一把吧。

果不其然,直接并进内核了(书要改吗。。当然不,本文简单增补即可。。)

4.10非常具有的代表性即是添加了Mediated Device(vfio-mdev),Intel有自家方案,nVidia也要支持,但Linux社区说你俩给个统一框架吧,要不太乱,于是就有了它。如此以来,N家的显卡便可以很快开发出对应的驱动(不要相信他们家销售说的话,14年偶尔问了一下说要支持的,都过去80年啦),可以看看N家去年(2016.9)放的PPT,02×03-Neo_Jia_and_Kirti_Wankhede-vGPU_on_KVM-A_VFIO_based_Framework

相较于之前的文章intel-igvt-g-vgpu-in-kvm-kvmgt-howto,这次的并入减少了我们的不少工作。

4.10 ChangeLog:https://kernelnewbies.org/Linux_4.10

参考https://github.com/01org/gvt-linux/wiki/GVTg_Setup_Guide

另外,RHEL 7.4也已加入了KVMGT/XenGT,可以试用一下。

来看看支持哪些CPU吧:

As a long-standing member of the open source community, Intel works upstream to ensure that full, open source implementations of Intel® GVT exist for open source virtualization hypervisors, KVM* and Xen*, known respectively as KVMGT and XenGT. KVMGT and XenGT deliver excellent virtual GPU performance in VMs across 5th and 6th generation Intel® Core™ processors (Intel® Core™ i3, Intel® Core™ i5, and Intel® Core™ i7 processors) with Intel Processor Graphics as well as Intel® Xeon® processors E3 v4 family with Intel Processor Graphics.

首先安装并编译4.10的内核:

搜索关键字kvmgt, mdev,vfio-iommu-type1,并将其标记为“M”。 模块标记完成后,进行编译安装。

从elrepo安装的缺少模块和编译环境。

然后修改grub文件:

为什么添加ignore_msrs呢?

Since some windows guest 3rd patry application / tools (like GPU-Z / Passmark9.0) will trigger MSR read / write directly, if it access the unhandled msr register, guest will trigger BSOD soon. So we added the “kvm.ignore_msrs=1” into grub for workaround.

然后继续编译QEMU,这次只要下载upstream的即可。

30 thoughts on “KVMGT in Linux 4.10 – 流媒体服务器、游戏、车载大屏等场景的应用技术预研

  1. 郝鹏

    你好!我也在ubuntu17.04下也尝试KVMGT,采用的gvt-linux-gvt-stable-4.10,Igvtg-qemu-stable-2.9.0;一直无法成功,用的是Intel i7处理器;一直无法在VM中看到Host的GPU设备;我是按照GVTg_Setup_Guide的流程做的,在编译内核之前,把gvt-linux-gvt-stable-4.10目录下的.config文件中的关于I915和mdev以及VFIO相关的选项都置为Y;编译并且安装内核后,一致无法在/sys/bus/pci/0000:00:02:0/的目录下生产mdev_support_xx的路径,请问哪里是否还有问题?

    Reply
    1. hirako

      你好!编译并且安装内核后,一致无法在/sys/bus/pci/0000:00:02:0/的目录下生产mdev_support_xx的路径;VM中看不到Host的GPU设备。

      Reply
      1. WangHong

        mdev_support_xx 这个路径不再 /sys/bus/pci下
        而是在 /sys/class/mdev_bus/0000:00:02.0

        Reply
        1. 匿名

          你好,我在16.04上面做的,这个两个路径下面都没有mdev_support_xx这个文件夹,求帮助,谢谢!

          Reply
      2. 匿名

        你是不是没有通过kenrel启动参数将gvt-g使能,检查启动参数中是否添加了i915.enagle_gvt=1

        Reply
        1. 匿名

          你好,我在16.04上面做的,在/sys/bus/pci/0000:00:02:0/的目录下没有产生mdev_support_xx这个文件夹,启动参数中添加了 i915.enagle_gvt=1,请帮组!谢谢

          Reply
      3. 匿名

        你好,你的问题解决了吗?遇到了和你同样的问题了,不知道原因出在何处了。

        Reply
      1. 郝鹏

        你要是解决了也在这里留一下解决的方法吧!我也一样!

        Reply
    2. 匿名

      你是不是没有通过kenrel启动参数将gvt-g使能,检查启动参数中是否添加了i915.enagle_gvt=1

      Reply
      1. 辉辉

        你好我按照这篇文档没有跑通,你能否把你跑通的流程发我一下呐,谢谢,如果成功的话,给你发个大红包!

        Reply
          1. 匿名

            你好我按照你给我发文档走到创建vgpu的时候,这个路径下面/sys/bus/pci/devices/0000:00:02.0没有mdev_supported_types这个文件夹,求帮助,谢谢

        1. lofyer Post author

          换最新内核,或者最新操作系统ubuntu18或者fedora-rawhide

          Reply
          1. 匿名

            我用已经是最新的gvt_linux的内核了,用的是gvt-stable-4.14新的内核了,系统是ubuntu16.0.4和操作系统有关系吗?

          2. lofyer Post author

            不要纠结了,换18.04,不行的话就是主板或者CPU的问题

          3. 匿名

            我主机得cpu: Intel(R) Celeron(R) CPU 3865U @ 1.80GHz
            你好,我主机得vga: 00:02.0 VGA compatible controller: Intel Corporation Device 5906 (rev 02)
            编译内核得时候有警告:Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin for module i915 说找不到固件,是不是和我得硬件有关系,硬件配置太低了? 系统是 16.04 gvt-stable-4.14 igvtg-qemu2.10.0,请回复,谢谢

          4. lofyer Post author

            哥们,你这个是典型硬件不支持,至少i5 i7 i9啥的吧

          5. 匿名

            兄弟加我一下qq吧:851728497,谢谢(刚才那个qq号写错了,尴尬),加我一下哈,谢谢!。

    3. 匿名

      你好,你的问题解决了吗?遇到了和你同样的问题了,不知道原因出在何处了。

      Reply
  2. 匿名

    我这个测试成功了 但是使用spicy连接的效果 不好 鼠标会飘动, 请问楼主是用的什么远程协议去连接的呢

    Reply
  3. 匿名

    virsh define vm0.xml 遇到如下问题
    error: Failed to define domain from vm0.xml
    error: unsupported configuration: unknown host device source address type ‘mdev’

    附xml片段

    Reply

发表评论

电子邮件地址不会被公开。