博威---云架构决胜云计算

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1781|回复: 0

KVM虚拟机使用GPU的最佳实践

[复制链接]
发表于 2023-10-13 09:54:07 | 显示全部楼层 |阅读模式
KVM虚拟机使用GPU的最佳实践
趋动科技2021-09-28 15:22






系统虚拟化是指一台物理计算机系统虚拟化为一台或多台虚拟计算机系统。每个虚拟机都拥有由自己的虚拟硬件提供的一个独立的虚拟机执行环境。通过虚拟化层VMM(Virtual Machine Manager)的模拟,虚拟机中的操作系统认为自己仍然独占一个系统在运行。
1974年,Popek和Goldberg定义了虚拟机的三层含义:同质、高效和资源受控——这也是一个虚拟机所拥有的三个典型特征。所谓同质,是指虚拟机运行环境和物理机的环境在本质上是相同的,但是表现上能够有一定的差异。所谓高效,是指虚拟机中运行的软件需要有接近物理机上直接运行的性能。所谓资源受控,是指VMM需要对系统资源有完全的控制能力和管理权限,包括资源的分配、监控和回收。
Intel的VT(Virtualization Technology)技术和AMD的SVM(Secure Virtual Machine)技术从根本上解决了x86架构体系中的虚拟化漏洞缺陷,使操作系统可以不做任何修改就-运行在虚拟机中。与此同时,PCI标准组织也在积极制定在PCI设备级对虚拟化支持的单根PCI桥IOV(SR-IOV)和多根PCI桥IOV(MR-IOV)。
从20世纪90年代至今,虚拟化软件已经取得了长足的发展,呈现出一派百花齐放的繁荣景象。除了VMware、Xen之外,又涌现出来KVM、VirtualBox和Hyper-V等。虚拟化种类繁多,KVM成为了目前比较主流的应用方案之一,KVM实际是linux内核提供的虚拟化架构,可将内核直接充当hypervisor来使用。在QEMU-KVM中,KVM运行在内核空间,QEMU运行在用户空间,实际模拟创建、管理各种虚拟硬件,QEMU将KVM整合了进来,通过/ioctl 调用 /dev/kvm,从而将CPU指令的部分交给内核模块来做。KVM实现了CPU和内存的虚拟化,但KVM不能虚拟其他硬件设备,因此QEMU还有模拟IO设备(磁盘,网卡,显卡等)的能力,KVM加上QEMU后就是完整意义上的服务器虚拟化。
KVM场景GPU传统使用方式
随着KVM的开源,,国内也涌现出多个基于KVM进行商业化开发并推出服务器系统虚拟化产品的厂家。而基于GPU在人工智能发展中越发重要,GPU在KVM中的使用方案尤为关键。在GPU作为图形加速器时,目前KVM环境较为主流的使用方式是GPU直通模式、GPU SR-IOV模式、GPU半虚拟化(mediated passthrough:包括Intel GVT-g和Nvidia GRID vGPU);GPU作为人工智能加速器时,由于AI应用对性能的要求,在没有其他完善的方案前,GPU直通是较为常见的方案。
直通模式的实现依赖于IOMMU(Input/Output Memory Management Unit)的功能,VTD对IOVA的地址转换使得直通设备可以在硬件层面直接使用GPA(Guest Physical Address)地址。所有直通设备的PCI 配置空间都是模拟的,由于GPU的复杂性和安全隔离的要求,GPU直通技术相对于其他设备来说,会有额外的PCI 配置空间模拟和MMIO的拦截。比如Hypervisor或者Device Module 不会允许虚拟机对GPU硬件关键寄存器的完全的访问权限,一些高权限的操作会被直接拦截。直通方式的虚拟机使用GPU架构图如下:


直通模式的优点:
- 对比物理机性能损耗较小,硬件驱动无需修改。直通设备对新功能的兼容性-取决于对虚拟机GPU驱动的兼容性。GPU厂商开发的针对物理机的驱动,一般情况下可以不做任何修改地放到虚拟机内部执行。
直通模式的缺点:
- 不支持热迁移
- 不支持GPU资源的切分
- 宿主机层面无法拿到监控数据,导致监控缺失
KVM场景GPU创新使用方式
GPU作为当前数据中心资产中成本占比较高的一项,在助力企业人工智能发展的同时,高昂的成本使其变成了资源紧缺的主要原因之一。GPU直通模式固化了资源的分配,在当前高速发展的AI应用中无法动态调度、分配和释放资源,使企业面临资源需求被压抑,被迫进行硬件投资,造成用人成本和采购成本的同时增加。
基于KVM的核心架构特点,OrionX通过创新的架构设计和强大的底层通信能力,实现了KVM虚拟机不仅可以接近无损地使用本机服务器的GPU算力,还可以通过网络调用远程的GPU能力。以下是基于OrionX让多个虚拟机共享同一GPU的示意图:


通过将OrionX应用于KVM虚拟机,用户在便捷地使用GPU的同时,性能不会出现明显下降。这不仅实现了小于单卡的资源分配,且资源池化能力使分配调度域扩展到数据中心级,大大提升超售能力;同时可以实现reserve模式和非reserve模式的资源分配。结合OrionX的创新设计,在KVM虚拟机场景也能最大化资源利用,实现动态分配和释放。
部分应用场景需要在虚拟机内启动容器,实现同一虚拟机内不同容器环境的应用部署,而容器之间的资源隔离仍很有必要——直通模式下,容器之间无法实现GPU的资源隔离;虚拟机内使用OrionX vGPU后,虚拟机内容器还可以嵌套地调用OrionX vGPU资源,实现资源的嵌套隔离调用,下图是该场景的架构示意。


OrionX也支持在KVM场景应用中的热迁移功能,在性能媲美直通的同时,弥补了直通的不足,同时还能打破资源调度的物理边界, 让用户的AI应用无需修改代码即可透明地使用其他物理机上的远程GPU资源, 从而实现数据中心级的GPU资源池化管理和弹性调度, 极大地提升了整个GPU资源池的利用率和管理灵活度。



您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|boway Inc. ( 冀ICP备10011147号 )

GMT+8, 2024-11-1 08:09 , Processed in 0.116040 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表