Empirical analysis of hardware-assisted GPU virtualization


年份:2019

作者:Anshuj Garg

会议:ESCI

出版商:IEEE

摘要

本篇文章对vGPU虚拟化的性能开销、调度算法的影响、同构与异构工作负载的干扰效应,以及PCI直通与vGPU的性能差异进行了研究。结果表明,vGPU虚拟化会导致可用内存减少高达7%,执行时间增加约20%;与同构任务相比,异构任务的共同放置可以显著提高GPU资源复用效率。

同构工作负载:相似的计算特性和资源需求,对统一资源进行竞争,异构则相反

介绍

由于PCI直通限制了硬件资源的复用和超额分配能力,文章提出并研究了用于虚拟化和管理GPU的硬件辅助特性。重点关注了vGPU配置文件和调度算法的作用,详细描述了硬件辅助GPU虚拟化的工作原理、配置参数以及由此产生的虚拟化开销。通过与专用GPU和PCI直通方式的性能对比,文章还分析了vGPU的性能偏差。最后,讨论了托管平台可能的扩展方向,旨在提供对云服务提供商有价值的输入,帮助他们构建高效的GPU资源管理平台。

背景和动机

A.硬件辅助化虚拟GPU

硬件辅助GPU技术通过将单个物理GPU划分为多个虚拟GPU(vGPU)来实现多路复用,NVIDIA通过相应的软件驱动程序实现vGPU的多路复用。这个过程涉及两个主要配置项:vGPU配置文件和调度算法。

  1. vGPU配置文件决定了可分配的vGPU数量以及每个vGPU的内存容量。例如,配置文件会指定每个vGPU分配多少内存,以及物理GPU支持多少个vGPU。

  2. 调度算法决定了如何在多个vGPU之间进行GPU资源的分配。NVIDIA的vGPU驱动程序支持三种调度算法:

    • 固定共享(Fixed Share):将物理GPU划分为与vGPU总数相等的时间槽,并为每个vGPU分配一个槽。如果某个vGPU未被使用,则该时间槽无法被其他vGPU利用,导致GPU资源浪费。

    • 等额共享(Equal Share):根据已经分配给虚拟机的vGPU数量来分配时间槽。即使某些虚拟机不活动,空闲的时间槽仍然会导致部分GPU资源未被充分利用。

    • 尽力而为(Best Effort):时间槽分配给执行GPU任务的活跃vGPU虚拟机。如果某个虚拟机没有任务执行,其空闲的时间槽可以被其他活跃虚拟机使用,从而最大化GPU的利用率。

    • 总结:默认值 on active 的区别

虚拟化环境中vGPU的硬件-软件堆栈

B.实证分析的必要性

尽管硬件辅助的vGPU技术相比传统的PCI直通方法具有显著的优势,但也会引入较大的开销,因为工作负载的特性与不同任务之间的调度所产生的干扰密切相关。因此,优化调度算法和配置以最小化干扰显得尤为重要。文章的目标是完成四个任务:

  1. 硬件辅助vGPU的虚拟化开销分析;

  2. 不同vGPU配置模式与不同类型工作负载的特性分析,目的是找到合适的配置关系;

  3. 不同类型工作负载对vGPU造成的干扰分析;

  4. 调度算法与vGPU多路复用的比较。

评估工作负载

本文提出了一些用于评估硬件辅助vGPU平台的工作负载,这些工作负载覆盖了不同类型的GPU应用。具体包括:

  1. 内存基准测试:用于测试CPU与GPU之间内存传输的时间。该基准测试分配一定量的GPU内存,进行数据的传输和回传,主要评估内存分配和数据传输的性能。

  2. TensorFlow基准测试:用于训练Resnet50模型的深度学习基准测试,使用Imagenet数据集,主要用于评估GPU在深度学习训练任务中的性能。

  3. PTB基准测试:用于训练递归神经网络(RNN)模型,使用Penn Tree Bank (PTB)数据集,评估GPU在处理语言模型时的表现。

  4. Phoronix测试套件:该套件用于评估系统组件的性能,其中我们选择了Blender基准测试,用于模拟Blender 3D建模软件,评估GPU渲染高级场景时的压力。

  5. MUMmerGPU基准测试:用于序列比对问题的GPU基准测试,它通过GPU加速进行大规模序列比对,测试GPU在数据对比中的性能。

  6. Myocyte基准测试:用于模拟和评估心肌细胞(心脏肌肉细胞)的行为,测试GPU在生物计算模拟中的表现。

  7. 组合基准测试:这是一个综合性的基准测试,结合了多个短时基准测试(运行时间小于60秒),主要测试GPU在短时计算密集型任务中的表现。

所有测试均在以下硬件和软件环境中进行:

  • 硬件:使用NVIDIA Tesla P100 GPU,采用PCI直通模式。

  • 操作系统和虚拟化:使用Ubuntu操作系统和VMware ESXi 6.5.0超管虚拟化环境,每个虚拟机分配了8个CPU核心、64GB内存、100GB物理存储。

  • 监控工具:使用nvidia-smi工具来测量GPU的利用率和GPU内存使用情况。

测试结果总结:

  • Blender和TensorFlow基准测试:这两个工作负载在执行过程中导致了高GPU利用率和高内存利用率,表明它们对GPU资源的需求较大。

  • Myocyte和PTB基准测试:这两个工作负载表现出中等GPU利用率(约70%-76%)和中等到低的内存利用率,说明它们对GPU的需求较为适中。

  • MUMmerGPU和组合基准测试:这两个基准测试显示了突发的GPU利用率,GPU利用率波动较大,特别是在MUMmerGPU中,由于其异构计算模型,GPU利用率和内存需求呈现明显的波动。

实验评估

A.虚拟化开销基准

在虚拟化开销测试中,我们对PCI直通GPU和16q vGPU进行了对比。测试结果显示,在内存可用性方面,使用PCI直通GPU时,约99.34%的总GPU内存对虚拟机可用,而使用vGPU时,仅有约93%的内存可用,这一差异表明vGPU驱动程序需要占用一定的GPU内存资源。在数据传输延迟方面,实验通过分配指定数量的GPU内存并测量CPU与GPU之间的数据传输时间,发现两者的延迟相似。尽管如此,由于vGPU的虚拟化开销,vGPU配置在某些情况下的延迟略高。

B.工作负载性能

在单个GPU的情况下,对比了PCI直通GPU和16Q vGPU配置文件的虚拟机运行不同工作负载的运行时,结果表明两者的工作负载性能非常接近,但vGPU模式仍存在一些虚拟化开销。

在多个虚拟机中运行相同的工作负载实例(4个工作负载分别分配给四个vGPU虚拟机)与在单个PCI直通GPU的虚拟机中运行相同的工作负载实例(等效为四个进程)进行对比。结果发现,在TensorFlow和Combined工作负载下,PCI直通模式性能更优,可能由于该模式下进程上下文切换开销较低,更适合计算密集型任务。而在MUMmerGPU工作负载下,vGPU模式表现更好,这可能是因为该负载具有突发性特征,并且涉及频繁的数据传输,但其计算密集度较低,因而vGPU模式的较少上下文切换和较小的数据传输开销更为适配。

C.不同 vGPU 配置文件下调度模式的影响

比较了三种vGPU调度算法(Fixed Share、Equal Share、Best Effort)对不同工作负载的性能影响。调度算法的选择和vGPU配置文件显著影响了各个基准测试的运行时。

  1. Memory Benchmark:在Memory基准测试中,不同的调度算法对性能影响较小。然而,随着活跃虚拟机数量增加,共享PCIe总线带来的数据传输争用导致性能下降。尤其在“1打开1激活”和“2打开2激活”配置下,Fixed Share由于预先分配了时间片,在1打开1激活时略显劣势。

  2. Blender Benchmark:Blender基准测试表现出对调度算法和虚拟机数量的敏感性。在Best Effort算法下,当活跃虚拟机数量增加时,性能下降尤为显著,因为Best Effort尝试最大化利用GPU资源,不进行严格的时间片划分。而在Equal Share算法下,当打开的虚拟机数量增加时,性能下降最明显,因为它会在所有打开的虚拟机之间均分时间片,导致非活跃虚拟机也占用资源。

  3. MUMmerGPU Benchmark:MUMmerGPU基准测试不受调度算法和配置文件变化的显著影响。这是因为MUMmerGPU工作负载特性决定了其GPU访问频率较低,且间隔时间较长,从而降低了与其他任务的资源竞争。

  4. 其他配置文件:在4个4GB和8个2GB vGPU配置文件下,PTB和Combined工作负载表现出了类似的趋势。在GPU利用率波动较大的情况下,Best Effort调度可以通过利用空闲时间片提高整体性能,而Equal Share和Fixed Share由于划分固定时间片,未能充分利用空闲资源。

D.vGPU算法调度的结果

三种vGPU调度算法在不同类型的工作负载下表现不同。在处理计算密集型任务时,三种算法对GPU的平均利用率相差无几。然而,在处理GPU利用率变化较大的工作负载(如MUMmerGPU和组合工作负载)时,最佳努力(Best Effort)调度算法能够显著提高GPU利用率,因为它会在找到空闲的GPU时间片时调度其他虚拟机的任务,从而实现工作节省。尽管如此,最佳努力调度算法仍存在一定的缺陷,即未能充分利用空闲的GPU时间片,尤其是当虚拟机配置的vGPU数量和实际工作负载不匹配时,这可能导致性能下降。(默认与on的问题解决不了,只能解决active和on的问题)

E.应用共置的影响

(1)8q 配置

实验使用了四种不同特性的工作负载(TF、B为计算密集型且GPU利用率固定;C、M为计算非密集型且GPU利用率变化)。通过组合这些工作负载,形成了十二种不同的异质组合。大多数组合相较于同质设置的运行时间有所减少,尽管在某些特定组合(如C和TF,C和B)中,Combined工作负载的运行时间有所增加,但反过来,TensorFlow和Blender的运行时间分别减少了40%和50%。

即前面的工作负载会先占用资源,导致后面的得不到响应,前面的工作负载密集比较好,因为后面不需要太多时间,相反则不好

(2)4q 配置

运行了三种不同计算密集度的工作负载:TensorFlow (TF)、Combined (C) 和 MUMmerGPU (M),并观察它们在异质环境中的表现。结果显示,当计算密集型的TensorFlow与较低密集度的Combined和MUMmerGPU组合时,TensorFlow的运行时间显著减少了约0.5倍,表明其在异质环境下得到了资源优先分配,性能提升明显。然而,中低密集度的Combined和MUMmerGPU受到资源竞争影响,运行时间增加,性能下降最高可达1.3倍。这表明在4q配置的异质环境中,资源分配倾向于优先满足高强度工作负载,从而影响了低强度任务的稳定性。

(3)2q 配置

在2q配置下,实验选择了内存需求较小的PTB和Combined基准,暴露了八个每个2GB内存的vGPU。实验结果表明,随着虚拟机数量增加并进行工作负载组合,整体执行时间得到了改善。尤其是组合工作负载(4P, 4C)表现出最优的性能提升,明显优于单一工作负载配置(8P, 0C)和(0P, 8C)。这种改进与之前的实验原理一致,即通过增加异质性和优化工作负载组合,可以提升资源利用率和整体执行效率。

F.结果总结

1.PCI直通在GPU内存和运行时间上通常优于vGPU。

2.多路复用vGPU时,高计算密集型工作负载的性能下降更为显著,所有类型的工作负载随着虚拟机数量的增加都会出现性能下降。

3.异构设置(将不同GPU利用特性的工作负载共同放置)有助于提高多路复用效率,减少性能下降,特别是对于GPU密集型与突发型工作负载的组合。

4.调度算法对计算密集型工作负载尤为重要,best effort调度机制能在这些工作负载上带来显著的性能提升。

G.硬件辅助vGPU的局限性

更改vGPU调度算法或配置需要重启物理机器或虚拟机,操作不便;仅支持同质vGPU配置,导致内存资源过度分配,无法灵活适应不同工作负载的需求;一些GPU高级功能(如统一内存、ECC、GPUDirect等)在vGPU中不可用;不支持GPU内存过度订阅,限制了多路复用的能力,影响资源利用效率。

总结

1.只知道有虚拟化开销,但并未进一步去测试虚拟化开销的具体原因

2.上下文切换开销的测量需要对NVIDIA驱动程序和VMware ESXi超管程序进行插装,但不开源,无法测量上下文切换开销

3.测验了异质共置工作负载,但实际上硬件辅助vGPU并不支持

4.共有三种调度算法,虽然best effort比较好用,但在一些情况下,改进并不明显

5.异质共置那一块,并未说明顺序的重要性,不利于读者理解,此外包括M和C在前排时,效率反而降低并未做出详细解释

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/19300.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试题2024-Java基础

Java基础 1、 Java语言有哪些特点 1、简单易学、有丰富的类库 2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高) 3、与平台无关性(JVM是Java跨平台使用的根本) 4、可靠安全 5、支持多线程 2、…

【案例分享】运用 Infragistics Ultimate UI 让工业物联网 IIoT 数据流更易于访问

客户概况 贝克休斯旗下的 Bently Nevada 是状态监测和资产保护领域的全球领导者。该公司拥有 60 多年的专业知识,在全球安装了超过 600 万个传感器和 100,000 个机架监测系统。 如今,Bently Nevada的开发团队正在使用现代 UI 工具包来增强他们的系统&a…

PHM技术:基于支持向量机的智能故障诊断 | 行星齿轮箱智能故障诊断

目录 1.数据获取 2.特征提取与选择 3.健康状态识别 1.数据获取 用的行星齿轮箱数据采集自图1中的多级齿轮传动系统实验台中,在实验过程中,分别模拟了8种行星齿轮箱的健康状态,包括正常、第一级太阳轮点蚀、第一级太阳轮齿根裂纹、第一级…

推荐一款Windows系统精简工具:NTLite

NTLite是一款可以对Windows系统优化的安装工具,使用这款完全中文的NTLite授权注册版让你不会因为注册或者语言导致无法正常的使用,如果你正需要马上下载使用吧。 NTLite基本简介 NTLite 中文版可以用来做什么,它其实是一款 Windows 系统精简…

ESP-IDF VScode 项目构建/增加组件 新手友好!!!

项目构建 1.新建文件夹,同时在该文件夹内新建.c和.h文件 如图所示,在components中新建ADC_User.c、ADC_User.h、CMakeLists.txt文件。当然这里你也可以不在components文件夹内新建文件,下面会说没有在components文件夹内新建文件构建项目的方…

Node Exporter 可观测性最佳实践

Node Exporter 介绍 Node Exporter 是一个开源的 Prometheus 指标收集器,它提供了大量关于宿主机系统的关键指标,如 CPU、内存、磁盘和网络使用情况。在 Kubernetes 环境中,Node Exporter 对于监控集群节点的健康状况至关重要。本文将介绍如…

Spring Boot汽车资讯:科技与速度的交响

3系统分析 3.1可行性分析 通过对本汽车资讯网站实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本汽车资讯网站采用SSM框架,JAVA作为开发语言&#…

外卖跑腿小程序源码如何满足多样需求?

外卖跑腿平台已经成了当代年轻人的便捷之选,校园中也不例外,那么外卖、跑腿小程序就需要满足用户多样化的需求,而这背后的源码扮演者最重要的角色。 用户类型的多样性 1.对上班族而言,他们希望外卖小程序能够快速下单、准确配送…

GeeRPC第一天 服务端与消息编码(1)

RPC 1. 系统架构图解释(Graph) 架构层次 RPC框架核心功能:这是系统的最上层,涵盖了框架的主要功能模块,直接与底层服务和用户交互。 服务层:主要负责服务的注册、发现和治理。 服务注册:将服务…

如何在谷歌浏览器中开启离线模式

在数字化时代,互联网已经成为我们生活中不可或缺的一部分。然而,有时候我们可能会遇到没有网络连接的情况,这时谷歌浏览器的离线模式就显得尤为重要。本教程将详细介绍如何在谷歌浏览器中轻松开启离线模式,并附带一些相关教程指南…

【进阶系列】正则表达式 #匹配

正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。re模块使 Python 语言拥有全部的正则表达式功能。 一个正则表达式的匹配工具:regex101: build, test, and debug regex s "C:\\a\\b\\c" pri…

C++使用Alglib数学库进行非线性最小二乘拟合

目录 一、前言 二、主要函数分析 2.1 lsfitcreatef 2.2 lsfitsetcond 2.3 lsfitfit 2.4 lsfitresults 三、基础代码实现 3.1 定义待拟合函数 3.2 数据拟合 四、可视化代码实现 4.1 拟合h文件 4.2 拟合cpp文件 4.2 代码实验 一、前言 本文记录基于Alglib进行非线性…

Spring Boot汽车世界:资讯与技术的交汇

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

算法--“找零方案”问题

def main():d [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1.0] # 存储各种硬币的面值d_num [] # 存储每种硬币的数量total_money 0 # 收银员拥有的总金额# 输入每种硬币的数量temp input(请输入每种零钱的数量(以空格分隔):)d_num0 temp.split() # 以空…

【UGUI】Unity 背包系统实现02:道具信息提示与显示

在游戏开发中,背包系统是一个常见的功能模块,用于管理玩家拾取的物品。本文将详细介绍如何在 Unity 中实现一个简单的背包系统,包括道具信息的提示和显示功能。我们将通过代码和场景搭建来逐步实现这一功能。 1. 功能需求清单 在实现背包系…

java基础概念31:常见API-Runtime

一、Runtime类常用方法 Runtime:表示当前虚拟机JVM的运行环境,只能有一个。 【注意】: 获取Runtime对象,只能通过getRuntime静态方法。 好处:不管在哪个类中调用Runtime方法,获取的都是同一个对象。即&…

SpringBoot 之整合gRPC

父工程中引入基本的依赖&#xff1a; <modules><module>api</module><module>client</module><module>service</module></modules><parent><artifactId>spring-boot-starter-parent</artifactId><group…

高性能linux服务器运维实战 运维深入实践

用户权限管理 用户与用户组 用户与角色分类 用户是根据角色定义的。可分三类用户角色&#xff0c;root用户&#xff0c;普通用户&#xff0c;虚拟用户 虚拟用户实际不存在&#xff0c;只是为了方便管理&#xff0c;满足进程或文件的属主需求 用户和组配置文件 /etc/passw…

景联文科技:以全面数据处理服务推动AI创新与产业智能化转型

数据标注公司在人工智能领域扮演着重要角色&#xff0c;通过提供高质量的数据标注服务&#xff0c;帮助企业和组织训练和优化机器学习模型。从需求分析到数据交付&#xff0c;每一个步骤都需要严格把控&#xff0c;确保数据的质量和安全性。 景联文科技是一家专业的数据采集与标…

上市公司企业研发操纵数据集(2008-2023年)

一、数据介绍&#xff1a;参考《财会月刊》苑泽明&#xff08;2020&#xff09;老师的做法&#xff0c;具体模型如下所示&#xff0c;TA 为总资产&#xff1b;RD 为研发支出&#xff1b;MV 为企业市值取对数&#xff1b;TBQ 为企业托宾 Q值&#xff1b;INT 为营业利润&#xff…