基于spiceserver实现的GPU方案

摘要

VDI桌面虚拟化中需要硬件GPU的运算能力增强图像运算处理能力,在普通VDI场景下,QXL显卡使用CPU模拟GPU,在图像指令处理性能上难以满足各类用户的需求。VDI技术支持硬件GPU行业中主要有GPU直通、共享GPU、vGPU三种方案,现在需要软件赋予VDI图像IP化传输的能力,本篇文章是要解决在VDI的GPU直通和vGPU两种场景下如何让spice协议正常工作问题。

本文通过实现win7、win10下的WDDM过滤驱动,以及将原先的虚机显卡设备驱动qxl驱动改装成PCI驱动,成功解决了spice对GPU直通、vGPU场景的支持问题,且支持不同厂商类型的GPU,不再过度依赖显卡厂商的支持,例如虚拟显示器、高效截屏。

概述

该技术产生的背景

随着我们同NVIDIA合作,产品正式支持了3D场景,然而我们的3D方案在市场上并没有取得很好的反响,主要原因是成本过于高昂,客户基本都无法接受,成本过高主要原因在于NVIDIA的昂贵授权及显卡费用,他们从中获取了绝大部分利润,所以研究低成本3D方案,增加产品利润是我们目前需要研究的重中之重。为摆脱对NVIDIA公司vGPU显卡的依赖,我们可以采用诸如:

  • AMD的MxGPU方案
  • AMD的消费级显卡直通方案
  • NVIDIA的消费级显卡直通方案
  • Intel的kvmgt方案

目前我们正在测试的MxGPU不支持硬件编码,这就造成我们无法像使用NVIDIA vGPU一样采用全屏硬件编码的方式实现协议,所以只能通过走我们的2D协议来实现。

为了做到在显示协议层面摆脱对显卡厂商的依赖,我们需要自行研究一些技术的实现来替代显卡厂商的上实现,我们需要解决spice无法显示问题、虚机分辨率过低且无法设置问题,同时需要达到高效显示性能和同物理机无差显示效果。

spice显示问题

在普通VDI场景下,spice协议是同虚拟显卡QXL设备对接,由装在QXL设备上的qxl驱动截获图形指令,然后封装成qxl指令发送到spiceserver进行压缩并传输到spiceclient进行显示,整个框架如图2.1所示,但是在vGPU和GPU直通场景的VDI下,有实际的GPU作为虚机的显卡驱动,由于需要用到物理GPU的渲染能力,qxl设备就无法充当显卡来使用了,造成了spice协议没了图片数据源头,其显示功能也就无法正常工作,解决这个问题的根本就是如何让qxl设备正常工作,且通过QXL设备的图片是经由物理GPU渲染的。
在这里插入图片描述

虚机分辨率无法设置问题

我们目前考虑两种方案,一种是自带显示器的显卡,比如MXGPU,还有一种消费级显卡,它本身是不带显示器的,在GPU直通场景下,VDI服务器上会插多张显卡,每张显卡透传到一个虚机上,在该场景下显卡上是不会插显示器的,部分厂商显卡驱动(例如AMD的消费级显卡)在显卡没有插显示器的情况下,会呈现出虚机支持的分辨率特别低,几乎不能使用,且无法自由切换显示器分辨率,在此场景下,若想要让虚机支持正常的显示分辨率,且可以对这些分辨率自由切换,则需要开发出“插”在物理GPU上的虚拟显示器,如果虚拟的显示器不是“插”在物理GPU上则该虚拟显示器上的图片不是经由物理GPU渲染的。

面向市场面临的问题

  1. 采用vGPU及GPU直通的目的是为了提升软件兼容性及渲染效果,高性能的VDI显示是必不可少的。
  2. 屏幕数据的采集效率,需要达到基本的1080P 60HZ及以上,为了保持spice协议的带宽不至于过大,需要传输图片的变化区域而不是全屏区域。
  3. 软件在兼容性上需要兼容各类工程类软件、3D软件、等对GPU依赖度较高的软件,同时需支持3D全屏、win7毛玻璃效果显示。
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宸汐软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值