带你读《弹性计算技术指导及场景应用》——2. vGPU资源利用率的提升、监控与告警的实现

本文涉及的产品
轻量应用服务器 2vCPU 1GiB,适用于搭建电商独立站
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
轻量应用服务器 4vCPU 16GiB,适用于搭建游戏自建服
简介: 带你读《弹性计算技术指导及场景应用》——2. vGPU资源利用率的提升、监控与告警的实现

简介:随着AI计算及云游戏为代表的图形渲染业务的飞速发展,越来越多的企业和个人开始使用GPU实例。同时,由于GPU算力资源成本较高,对于负载相对较小的业务,客户会更倾向于选择使用1/2或者1/4甚至更小的vGPU实例来运行其业务,vGPU技术随之得以迅速发展。

背景

随着AI计算及云游戏为代表的图形渲染业务的飞速发展,越来越多的企业和个人开始使用GPU实例。同时,由于GPU算力资源成本较高,对于负载相对较小的业务,客户会更倾向于选择使用1/2或者1/4甚至更小的vGPU实例来运行其业务,vGPU技术随之得以迅速发展。

目前主流的vGPU技术是通过对物理GPU资源进行显存切分隔离,然后以时间片轮转的方式调度使用GPU资源。这就要求对物理GPU进行合理的切分、调度管理,并且能够及时监控物理GPUvGPU的利用率、性能及健康状态,并且在GPU/vGPU异常时能够及时告知用户或研发人员,以便及时解决问题、避免长时间影响客户的业务。

下面,分两部分介绍下在阿里云上是如何提升vGPU资源利用率的,并且如何对vGPU进行监控与告警。

vGPU利用率的提升

当前主流的vGPU实例实现方案大体是这样的:首先将物理GPU切分为多个vGPU,然后根据资源分配策略将物理GPU上的vGPU分配给Guest VM,最后再根据调度策略将这些vGPU通过time-sliced的方式轮流使用GPUGraphics/Compute3D、编解码等引擎资源。在时间切片 vGPU 中,在 vGPU 上运行的进程被安排为串行运行。当进程在 vGPU 上运行时,vGPU 独占使用 GPU 的引擎,其它vGPU都会等待,直到自己的时间片到来。

在云厂商使用的主流的vGPU切分方案中,为了降低单物理GPU故障时对vGPU实例的影响,通常采用Breadth-first分配策略,即广度优先遍历算法,该策略尝试最小化每个物理 GPU上运行的 vGPU 数量,即分配支持该vGPU且其上运行vGPU数量最少的的物理GPU。然后,使用Fixed share按照time-sliced时间片轮转的方式将运行在vGPU上的业务调度到GPU引擎上,轮流使用GPUGraphics/Compute3D、编解码等引擎资源。在时间切片 vGPU 中,在 vGPU 上运行的进程被安排为串行运行。

当进程在 vGPU 上运行时,vGPU独占使用 GPU 的引擎,其它vGPU 都会等待,直到自己的时间片到来。该调度策略在云上可以保证各个vGPU实例的公平,避免graphics-intensive业务抢占graphics-light业务的运行时间。

但是,随着vGPU技术的日趋完善与稳定性的不断提高,加之很多云厂商为了提高物理GPU资源利用率,都支持了vGPU混部技术,阿里云的vGPU混部的实现需要考虑与老版本兼容,大体实现步骤为:

∙        查询Host上的GPU信息,切片时会使用该信息。

∙        查询当前某GPU上的vGPU信息,用于分配给待创建的vGPU实例。

∙        根据创建的实例机型,分配空闲的vGPU device。当没有空闲的vGPU时,选择空闲GPU进行切片,并分配vGPU device给实例。

∙        当某个GPU上的vGPU实例全部释放时,需要清除该GPU的切片信息,以便下次重新切片成其它规格的vGPU device

∙        切片的实现与释放都由管控侧操作,避免了上下信息不一致带来的实例启动失败等问题。

∙        混部的实现中,需要指定vGPU所属GPUBDF,以此来区分老版本,确保新老版本在现网正常运行。

由此可以看出,Breadth-frist分配策略与vGPU混部之间存在冲突,无法共存,这就降低了物理GPU资源的可用率。举个例子来说,例如在一个Host上有4个物理GPU,理论上可以创建81/2 vGPU实例或者161/4 vGPU实例。

如果采用breadth-first,客户A使用41/2实例,客户B使用41/4实例,如果客户A先创建实例,那么这41/2实例会占用4个物理GPU实例,导致客户B的实例无法创建。而使用depth-first,客户A41/2实例会使用2个物理GPU,客户B1/4实例则会使用另外2个物理GPU,显著提升了物理GPU的资源利用率,也就提高了资源售卖率、降低了成本。混部效果如下图所示:

image.png

目前已经支持1/11/24规格的vGPU切分,极大的方便了客户根据自身业务选择合适的规格,降低了客户成本,同时提高了GPU资源利用率。

vGPU的监控与告警

vGPU实例的最大客户就是云游戏,而云游戏对性能有极高的要求,例如大多数游戏需要满足60 FPS的要求,这就要求vGPU性能不能出现抖动和卡顿。而这类性能问题是无法通过日志来定位的,加上掉卡、TDR等常见问题的频发,监控与告警机制就显得尤为重要了。由于现有的监控工具容易导致Host vGPU driver死锁、CPU利用率冲高甚至hang住等问题,我们自己开发了一套vGPU监控程序来监控vGPU状态,大体步骤如下:

∙        当机器部署上线后,监控任务开始启动,当vGPU VM启动后,开始采集物理GPUvGPU相关信息,包括GPU温度、功耗、显存使用情况、GPU/vGPU利用率等,甚至还包括vGPU上进程的利用率以及license状态等信息。

∙        vGPU智能监控已经完全接入嫦娥,运维及研发同学在定位vGPU相关问题时,可以清晰直观地通过嫦娥上的监控信息进行分析与定位。目前已将上述所有信息都接入嫦娥监控,包括GPU的温度、功耗、显存利用率、GPU利用率、clock、编解码等:

image.png

image.png

image.png

还有vGPU相关的信息,包括vGPU利用率、显存利用率、进程利用率、编解码利用率、license状态等等。

image.png

设置各个指标的告警阈值,当达到阈值时触发告警,并及时通知到开发、运维人员,有必要时通知客户系统管理员,以便及时处理问题,保证系统和客户业务的稳定运行。

结合vGPU热迁移技术,将GPU负载高且满足热迁移条件的vGPU实例迁移到GPU负载低的Host上,达到负载均衡的目的,保证vGPU业务高效稳定的运行。

通过对用户实例使用vGPU情况进行大数据统计分析,了解典型客户、典型场景的真实资源需求情况,辅助PD进行产品设计,支撑异构实例研发的方向决策,制定更合理的实例规格,对剩余的CPU或内存资源与主售实例进行混买,提高实例密度、降低成本。

根据上述嫦娥展示的监控数据,就可以很方便的来定位vGPU实例性能问题, 例如:

∙        对于FPS持续很低等问题,可以关注vGPULicense是否激活,1代表已激活,0代表未激活;

∙        对于FPS达不到预期的60等问题,可以关注GPU的功耗、温度、利用率等是否已经到达瓶颈;

∙        对于VM内应用性能、卡顿等问题,可以关注vGPU中的各项利用率指标是否正常;

当然了,Host驱动与Guest驱动版本是否匹配,clock是否有限频等,也可能导致性能问题。

如果以上都正常,就要结合是否有XID errorCPU、内存、网络、磁盘等是否有瓶颈来综合定位了。

结束语

阿里云的vGPU实现方案,集vGPU混部、监控告警、热迁移于一体,不仅最大的提高了GPU资源售卖率,而且为开发、运维人员定位GPU/vGPU的功能、性能问题带来了极大的便利,还能通过告警及早发现各类问题,确保客户业务稳定、高效的运行。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
打赏
0
2
2
1
1028
分享
相关文章
Kubernetes监控:Prometheus与AlertManager结合,配置邮件告警。
完成这些步骤之后,您就拥有了一个可以用邮件通知你的Kubernetes监控解决方案了。当然,所有的这些配置都需要相互照应,还要对你的Kubernetes集群状况有深入的了解。希望这份指南能帮助你创建出适合自己场景的监控系统,让你在首次发现问题时就能做出响应。
40 22
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
559 3
无痛入门Prometheus:一个强大的开源监控和告警系统,如何快速安装和使用?
Prometheus 是一个完全开源的系统监控和告警工具包,受 Google 内部 BorgMon 系统启发,自2012年由前 Google 工程师在 SoundCloud 开发以来,已被众多公司采用。它拥有活跃的开发者和用户社区,现为独立开源项目,并于2016年加入云原生计算基金会(CNCF)。Prometheus 的主要特点包括多维数据模型、灵活的查询语言 PromQL、不依赖分布式存储、通过 HTTP 拉取时间序列数据等。其架构简单且功能强大,支持多种图形和仪表盘展示模式。安装和使用 Prometheus 非常简便,可以通过 Docker 快速部署,并与 Grafana 等可
1016 2
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
521 0
云监控:引领未来监控技术的新篇章
传统监控系统需要投入大量的人力物力进行建设和维护,而云监控则通过云计算平台的按需付费特性降低了建设和维护成本。用户只需根据实际需求购买相应的服务和资源即可实现监控功能,无需担心设备升级、维护等问题。
【阿里云弹性计算】ECS实例监控与告警系统构建:利用阿里云监控服务保障稳定性
【5月更文挑战第23天】在数字化时代,阿里云弹性计算服务(ECS)为业务连续性提供保障。通过阿里云监控服务,用户可实时监控ECS实例的CPU、内存、磁盘I/O和网络流量等指标。启用监控,创建自定义视图集中显示关键指标,并设置告警规则(如CPU使用率超80%),结合多种通知方式确保及时响应。定期维护和优化告警策略,利用健康诊断工具,能提升服务高可用性和稳定性,确保云服务的卓越性能。
303 1
SpringCloud微服务实战——搭建企业级开发框架(四十五):【微服务监控告警实现方式二】使用Actuator(Micrometer)+Prometheus+Grafana实现完整的微服务监控
无论是使用SpringBootAdmin还是使用Prometheus+Grafana都离不开SpringBoot提供的核心组件Actuator。提到Actuator,又不得不提Micrometer,从SpringBoot2.x开始,Actuator的功能实现都是基于Micrometer的。
596 57
shell监控脚本告警通过微信外发
shell监控脚本告警通过微信外发
243 1