V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CatCode
V2EX  ›  VMware

VMware Workstation 是怎么做到把部分显卡资源共享个虚拟机的?

  •  
  •   CatCode · 2022-04-23 15:28:22 +08:00 · 5642 次点击
    这是一个创建于 706 天前的主题,其中的信息可能已经有所发展或是发生改变。

    主机是 Windows 10 操作系统,不是 Windows Server 。显卡是 N 卡游戏卡,不是专业卡;装的 Game Ready 驱动,不是 Studio 驱动。

    Workstation 虚拟机无论是装 Windows 还是带桌面环境的 Linux 都很流畅。

    而我折腾 ESXi/PVE 的时候,Windows 虚拟机和带桌面环境的 Linux 都卡的要死。SSH 登上去,shell 下面跑倒是流畅。跑分啥的更物理机相比有轻微损失(不超过 10%)

    看了一下其他折腾 ESXi/PVE ,特别是玩 Jellyfin 这类的,多数都会用显卡直通的方式,把核显或者 PCIe 显卡分配给某个虚拟机独占。

    我就比较好奇,能否多个虚拟机共享一张显卡呢?

    毕竟大多数时候,我们这些虚拟机并不会有多个高负载的图形应用要同时跑。个人的虚拟化上,几个轻负载的图形任务(例如维持基本的桌面环境)+一个重负载应用(比如视频实时转码)的场景更常见。

    4 条回复    2022-04-24 10:48:59 +08:00
    choury
        1
    choury  
       2022-04-23 16:07:26 +08:00 via Android   ❤️ 1
    有硬件实现的 GPU 虚拟化,比如 NV 的 vGPU,各大云厂商一般用的这个方案,AMD 的 sriov 方案,google 的云游戏是这个方案。而你这里的 VMware 就是个纯软件方案了,虚拟机里面有 VMware 的 GPU 驱动(比较新的 linux 内核会自带,老的内核要用个什么 vm tools 自己装),然后这个驱动就干一件事,收到所有请求都发给虚拟机的管理进程,它实际去访问宿主机上的 GPU 进行处理,然后再把结果返回到虚拟机。这种方案通用性好,想开几个实例开几个,主机上看就是多几个使用 GPU 的进程,缺点就是来回转发性能差,毕竟对于渲染来说,要传输的数据量还是挺大的。
    CatCode
        2
    CatCode  
    OP
       2022-04-23 16:29:17 +08:00
    @choury NV 的 vGPU 听说过,但似乎对亮机卡没有开放。AMD 的 sriov 有对低端卡开放吗?
    choury
        3
    choury  
       2022-04-23 20:39:10 +08:00
    @CatCode #2 没有,这种功能只支持服务器卡的,比如 Tesla V100 这种,而且是按照 license 收费的
    MrLonely
        4
    MrLonely  
       2022-04-24 10:48:59 +08:00
    因为 Workstation 或者 Fusion 这种 2 型虚拟机可以用普通显卡,甚至集成显卡来计算图像。
    而 ESXi 里的图像都是用 CPU 硬肝出来的。
    vGPU 会有用,但意义不大。一个是授权贵,一个是要部署得搞非常复杂。再有就是无法使用 VMRC 了,得用远程桌面。而用远程桌面又跟普通物理机的图像效果差不多了。

    想在 ESXi 下顺畅使用普通桌面,办法也有,用 vSGA 。对于虚拟机来说,一样是把图像交给宿主机去算,不需要 vmware tools 以外的驱动,自然也不需要这种授权。但是在宿主机上不再用 CPU 去肝图像了,是交给 GPU 去算的。效果自然就非常接近 Workstation 了。

    不过这个 vSGA 型号数量很少,你可以直接搜 vSGA HCL 找找看哪个型号适合。我用的是一张二手 P4 卡,当年卖一万多,现在就一千多一张,还算能承受的价格。

    到手当然还得另外装个驱动才能让 ESXi 成功识别并运用这张 GPU 。

    我自己的实际体验是跑 performance test 里的 3D 测试,无 GPU 时刚开始的小飞机图像基本上只有个位数 FPS 。装了 GPU 以后就能有个几十 FPS 了。工作中用 Excel 时也能感受到明显的流畅度提升。

    至于这个 vSGA 够不够视频转码,我猜很可能不够。但是至于到底够不够,还是得你自己去找答案了。

    还有就是我还知道一个替代方案。Workstation 16.1.2 这个版本里有最后一版 Shared VMs 功能。你可以理解为是一个低配版 ESXi 。把开通了 Shared VMs 的机器当成了一个 Host ,其他用户通过 Fusion 或者 Workstation 进行连接。就像 Fusion 连接 ESXi 或者 vCenter Server 一样。不过这样理论上来说也都是类似的 vSGA 模式,虚拟机没有更多的 GPU 算力或者权限。

    最最后就是,如果你打算在 ESXi 里用 vSGA ,需要驱动的话,可以来找我。我可以半价给你分享一份我买的驱动文件。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2875 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 11:39 · PVG 19:39 · LAX 04:39 · JFK 07:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.