一种图形处理器透传的方法与流程

文档序号:20917044发布日期:2020-05-29 13:40阅读:541来源:国知局
一种图形处理器透传的方法与流程

本申请涉及图形处理器(gpu)透传技术领域,尤其涉及一种图形处理器透传的方法。



背景技术:

图形处理器(gpu)透传是指把物理的gpu设备透传给虚拟机使用,主要用于对图形和图像要求较高的场景,例如高清视频编解码、3d游戏、物理仿真等。

cloudstack是一种开源的具有高可用性及扩展性的云计算平台,其作为一个流行的云平台开源框架,可以让用户快速而方便地在现有的架构上建立自己的云服务。但是,在cloudstack云计算平台上,现有技术中的gpu透传仅支持xenserver和vmware虚拟化平台,而不支持kvm虚拟化平台。

kvm作为一个优秀的开源虚拟化平台,已经越来越受用户青睐。但是,现有技术中针对kvm透传gpu设备给虚拟机的方案都无法应用于cloudstack云平台上。也就是说,在现有技术中的cloudstack云平台上,kvm不能透传gpu设备给虚拟机使用,从而无法满足使用kvm虚拟化平台的用户对图形和图像要求较高的迫切需求。



技术实现要素:

有鉴于此,本发明提供了一种图形处理器透传的方法,从而可以在cloudstack云平台的kvm虚拟化平台上将gpu设备透传给虚拟机使用。

本发明的技术方案具体是这样实现的:

一种图形处理器透传的方法,该方法包括:

在云平台添加物理机时确定是否启用gpu透传;

定时收集物理机的所有gpu设备的信息;

在虚拟机页面中设置gpu设备管理页面;

为虚拟机选择相应的gpu设备,并将所选择的gpu设备透传给该虚拟机;

启动虚拟机,并安装该虚拟机所对应的gpu设备的驱动。

较佳的,所述在云平台添加物理机时确定是否启用gpu透传包括:

在主机页面增加供用户选择是否启用gpu透传的选择字段;

在添加主机的应用程序接口中增加与所述选择字段相关的参数;

将与所述选择字段相关的参数保存到数据库中;

当确定需要启用gpu透传时,在云平台代理设置脚本中调用脚本,启用gpu透传;

将gpu设备的虚拟功能输入输出驱动从物理机卸载。

较佳的,在主机页面所增加的选择字段字段为“输入输出内存管理单元启用状态”。

较佳的,在添加主机的应用程序接口中增加的参数为iommuflag。

较佳的,所述在云平台代理设置脚本中调用脚本,启用gpu透传包括:

在云平台代理设置脚本中调用脚本managegpu.sh,将内核引导参数设置为开启。

较佳的,所述定时收集物理机的所有gpu设备的信息包括:

新增一个定时任务;

当所述定时任务启动时,收集物理机的所有gpu设备的信息;

将收集到的gpu设备的信息保存到数据库中。

较佳的,所述为虚拟机选择相应的gpu设备,并将所选择的gpu设备透传给该虚拟机包括:

增加附加设备应用程序接口;

将虚拟机与所选择的gpu设备关联;

为与所选择的gpu设备关联的虚拟机配置文件增加配置参数。

较佳的,所述配置参数包括:

设备模式、设备类型、驱动名称和设备地址。

较佳的,该方法还进一步包括:

当虚拟机不需要再使用gpu设备时,将gpu设备从虚拟机中卸载。

较佳的,所述将gpu设备从虚拟机中卸载包括:

增加解除附加设备应用程序接口;

删除虚拟机与所选择的gpu设备的关联。

如上可见,在本发明中的图形处理器透传的方法中,由于在云平台添加物理机时确定是否启用gpu透传,并定时收集物理机的所有gpu设备的信息,还在虚拟机页面中设置gpu设备管理页面,为虚拟机选择相应的gpu设备,并将所选择的gpu设备透传给该虚拟机,启动虚拟机,并安装该虚拟机所对应的gpu设备的驱动,因此可以在cloudstack云平台的kvm虚拟化平台上将gpu设备透传给虚拟机使用,从而基于cloudstack云平台+kvm虚拟化平台实现了gpu透传,满足了许多使用cloudstack云平台+kvm虚拟化平台的用户对图形和图像要求较高的迫切需求。

附图说明

图1为本发明实施例中的图形处理器透传的方法的流程图。

具体实施方式

为使本发明的技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明作进一步详细的说明。

图1为本发明实施例中的图形处理器透传的方法的流程图。如图1所示,本发明实施例中的图形处理器透传的方法包括如下所述步骤:

步骤11,在云平台添加物理机时确定是否启用gpu透传。

在本发明的技术方案中,当在云平台上添加新的物理机时,需要确定是否需要启用gpu透传,即选择是否开启输入输出内存管理单元(iommu,input/outputmemorymanagementunit)。

另外,在本发明的技术方案中,可以使用多种实现方法来实现上述的步骤11。以下将以其中的一种具体实现方式为例对本发明的技术方案进行详细的介绍。

例如,作为示例,在本发明的一个具体实施例中,所述步骤11可以包括如下的步骤:

步骤111,在主机页面增加供用户选择是否启用gpu透传的选择字段。

例如,作为示例,在主机页面所增加的选择字段字段可以是:“iommu启用状态”。

步骤112,在添加主机的应用程序接口(addhostapi)中增加与所述选择字段相关的参数。

例如,作为示例,在本发明的一个具体实施例中,可以在addhostapi中增加参数iommuflag。

步骤113,将与所述选择字段相关的参数保存到数据库中。

例如,作为示例,在本发明的一个具体实施例中,可以将所增加的参数iommuflag保存到数据库中。

步骤114,当确定需要启用gpu透传时,在云平台代理设置脚本(cloudstack-setup-agent)中调用脚本,开启iommu。

例如,作为示例,在本发明的一个具体实施例中,当确定需要启用gpu透传时,可以在cloudstack-setup-agent中调用脚本(例如,脚本managegpu.sh),将内核引导参数设置为开启(例如,将intel_iommu=on添加到grub启动文件中),从而通过将“intel_iommu=on”传给内核启动参数来开启iommu,即启用gpu透传。

步骤115,将gpu设备的虚拟功能输入输出(vfio,virtualfunctioni/o)驱动从物理机卸载。

在本步骤中,将gpuvfio驱动从物理机卸载,从而可以将该gpu设备提供给虚拟机使用。其中,vfio是一个可以安全的把设备i/o、中断、dma等暴露到用户空间(userspace),从而可以在用户空间完成设备驱动的框架。用户空间直接设备访问,虚拟机设备分配可以获得更高的io性能。

通过上述的步骤111~115,即可在云平台添加物理机时确定是否启用gpu透传,并在确定需要启用gpu透传时,启用gpu透传。

步骤12,定时收集物理机的所有gpu设备的信息。

在本发明的技术方案中,可以设置一个定时任务,定时收集物理机的所有gpu设备的信息。

另外,在本发明的技术方案中,可以使用多种实现方法来实现上述的步骤12。以下将以其中的一种具体实现方式为例对本发明的技术方案进行详细的介绍。

例如,作为示例,在本发明的一个具体实施例中,所述步骤12可以包括如下的步骤:

步骤121,新增一个定时任务。

步骤122,当所述定时任务启动时,收集物理机的所有gpu设备的信息。

在本发明的技术方案中,当所述定时任务启动时,可以通过调用命令来收集物理机的所有gpu设备的信息。

步骤123,将收集到的gpu设备的信息保存到数据库中。

通过上述的步骤121~123,即可定时收集物理机的所有gpu设备的信息。

步骤13,在虚拟机页面中设置gpu设备管理页面,用于供用户为虚拟机加载或卸载gpu设备。

在本发明的技术方案中,可以在虚拟机页面中设置一个gpu设备管理页面,在设置了上述gpu设备管理页面之后,用户就可以在gpu设备管理页面中为虚拟机加载或卸载gpu设备。

步骤14,为虚拟机选择相应的gpu设备,并将所选择的gpu设备透传给该虚拟机。

在本发明的技术方案中,当用户在gpu设备管理页面中为虚拟机加载了gpu设备之后,即可为虚拟机选择相应的gpu设备,然后将所选择的gpu设备透传给该虚拟机。

另外,在本发明的技术方案中,可以使用多种实现方法来实现上述的步骤14。以下将以其中的一种具体实现方式为例对本发明的技术方案进行详细的介绍。

例如,作为示例,在本发明的一个具体实施例中,所述步骤14可以包括如下的步骤:

步骤141,增加附加设备应用程序接口(attachdeviceapi)。

步骤142,将虚拟机与所选择的gpu设备关联。

步骤143,为与所选择的gpu设备关联的虚拟机配置文件增加配置参数。

例如,作为示例,在本发明的一个具体实施例中,可以为与所选择的gpu设备关联的虚拟机配置文件增加如下的配置参数:设备模式、设备类型、驱动名称和设备地址。

例如,作为示例,可以通过如下的方式来增加设备模式、设备类型、驱动名称和设备地址等配置参数:

devicesbuilder.append("<hostdevmode='subsystem'type='pci'managed='yes'>\n");

devicesbuilder.append("<drivername='vfio'/>\n");

devicesbuilder.append("<source>\n");

devicesbuilder.append("<addressdomain='0x0000'bus='0x"+firstid+"'slot='0x"+secondaryid+"'function='0x0'/>\n");

devicesbuilder.append("</source>\n")。

通过上述的步骤141~143,即可为虚拟机选择相应的gpu设备,并将所选择的gpu设备透传给该虚拟机。

步骤15,启动虚拟机,并安装该虚拟机所对应的gpu设备的驱动。

在本步骤中,可以启动虚拟机,并安装该虚拟机所对应的gpu设备的驱动,从而使得该虚拟机可以使用所对应的gpu设备。

因此,通过上述的步骤11~15,即可在cloudstack云平台的kvm虚拟化平台上将gpu设备透传给虚拟机使用。

另外,在本发明的技术方案中,在上述的步骤15之后,还可以进一步包括:

步骤16,当虚拟机不需要再使用gpu设备时,将gpu设备从虚拟机中卸载。

另外,在本发明的技术方案中,可以使用多种实现方法来实现上述的步骤16。以下将以其中的一种具体实现方式为例对本发明的技术方案进行详细的介绍。

例如,作为示例,在本发明的一个具体实施例中,所述将gpu设备从虚拟机中卸载可以包括如下的步骤:

步骤161,增加解除附加设备应用程序接口(dettachdeviceapi)。

步骤162,删除虚拟机与所选择的gpu设备的关联。

综上所述,在本发明的技术方案中,由于在云平台添加物理机时确定是否启用gpu透传,并定时收集物理机的所有gpu设备的信息,还在虚拟机页面中设置gpu设备管理页面,为虚拟机选择相应的gpu设备,并将所选择的gpu设备透传给该虚拟机,启动虚拟机,并安装该虚拟机所对应的gpu设备的驱动,因此可以在cloudstack云平台的kvm虚拟化平台上将gpu设备透传给虚拟机使用,从而基于cloudstack云平台+kvm虚拟化平台实现了gpu透传,满足了许多使用cloudstack云平台+kvm虚拟化平台的用户对图形和图像要求较高的迫切需求。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1