超算场景的业务特点
Cloud Native
主机监控,或许是监控/可观测领域最传统和普遍的需求。
在超算训练,AI 大规模训练的业务场景下,主机监控又有哪些痛点和难点呢?
根据我们针对多个大规模超算客户的需求整理,超算场景的特点主要集中在如下几个方面:
超算擅长处理可并行化的计算问题,通过成千上万的处理器核心协同工作,实现任务的分解与加速执行。用户通常采用弹性任务调度系统在云上快速拉起大量的 ECS 主机来满足大规模计算需求。训练任务进行时计算集群整体算力利用率等是成本控制的关键。
超算系统设计用于处理大规模数据集,能够持续高效地完成大量计算工作,保证高吞吐量,适用于大数据分析、气候模拟、生物信息学研究等领域。如果计算集群某些算力机器出现吞吐瓶颈,即会影响整体计算性能。
在超算场景中,每一次训练任务一般持续几个小时到几天不等,每一次训练的算力需求也差异较大。通常用户采用弹性算力供给方式,在需要时拉起算力资源,结束时完成释放。计算任务的规模和复杂性迅速变化,也可能需要在短时间内快速增加或减少计算资源。
特定时段会对计算资源有极高的需求,而在其他时期则可能需求降低,形成明显的需求波动。
超算任务可能会同时使用大量的 CPU 、GPU 、RDMA 等资源,以实现更高效的计算性能。不同的主机上可能存在异构的资源类型以支撑不同的计算任务。
超算场景面临的可观测挑战
Cloud Native
在超算应用场景中,计算性能的极致要求和资源的动态伸缩特性给主机可观测提出了复杂挑战。
为了确保新增计算节点能够迅速并稳定地融入整体计算环境,同时兼顾成本效率,可观测性策略需要精心设计和实施,通过可观测可以及时发现潜在的问题点,或者资源优化点等。
对计算节点的运行状态、负载、网络延迟等关键指标进行秒级监控,是确保系统稳定性和高效性的前提。
超算任务往往会以进程形式运行在主机上,不仅需要对主机整体资源消耗有监控,还需要对具体计算任务资源消耗具备可观测能力。进程间的横向资源消耗对比,可帮助快速发现资源消耗异常的进程。进程的数量监控,以及进程下的协程数量等,都是关键的可观测指标。
监控系统需配备自动服务发现机制,以便在节点弹性伸缩时,能够立即识别新增或被释放的节点,以实现秒级单位下纳入监控系统。
对于新增的计算节点,自动部署监控组件是迅速实现节点加入监控体系的关键。通常对于不同算力的主机进行智能识别,以安装对应的数据采集组件,例如区分 Windows 或 Linux 主机吗,GPU 算力,RDMA 高性能网络需求。
数据标签(也称为标签或标签键)是与指标相关联的元数据,用来提供额外的上下文信息,以便对指标进行更细致的分类、筛选和分组。根据使用场景和用途不同,需要增加特定的标签,例如组织性标签、环境标签、业务标签等。通过适当地使用和组合不同的数据标签,可以提高监控数据的可查询性和可操作性,并帮助您构建一个更加强大和灵活的可观测性解决方案。
超算场景弹性主机监控方案
Cloud Native
阿里云 Prometheus 主机监控针对阿里云 ECS 服务器提供了一个高效且易于管理的监控方案,这一方案的特点是顺应了现代云计算环境中对于可观测性和自动化管理的需求,阿里云 Prometheus 主机监控具备如下优势。
阿里云 Prometheus 主机监控架构
-
适应性:自动服务发现机制允许监控系统快速适应云资源的动态变化,确保所有运行中的实例都被及时监控。 -
多样性:支持多种服务发现类型,满足不同场景下的监控需求,如支持 Kubernetes 集群内服务的自动发现,以及其他类型云服务的集成。
-
即插即用:自动化安装 Exporter,使得新启动的计算节点可以立即被监控系统识别并收集其度量,无需人为干预。 -
全面监控:提供多种 Exporter,包括 Node-exporter、Process-exporter、GPU-exporter 和中间件 Exporter,进行全方位的性能追踪。
-
配置简化:自动化配置生成减轻了运维人员手动配置的负担,确保所有节点和服务的度量都能被准确无误地采集。 -
灵活性:配置可根据现有的监控需求作出相应调整,带来灵活性和可扩展性,应对复杂多变的监控环境。
-
集中管理:通过托管的 Prometheus Agent 统一管理数据采集,简化了监控架构,提高了运维效率。用户对数据采集链路无感知。 -
高效能:因为抽象了监控算法的复杂性,使用 Agent 可以减少误配的可能性,提高监控数据的准确性和时效性。
-
自动摘取阿里云 ECS 主机的标签、资源组、区域等信息,并自动注入到整个指标体系中,方便快捷。 -
配置化自定义添加额外标签能力,可进一步提升标签体系的灵活性,自定义例如业务标识、环境标识、数据来源标识等。
-
支持超大规模主机接入,采用用户独享与共享并存托管模式,依据用户主机接入规模动态调整托管资源,保证接入的时效和准确性。 -
存储可支持超大规模指标存储,并具备高性能的查询和展示能力。
-
为了实现一个系统级的、全面的可观测性,单一实体监控是不够的,需要整合不同维度的监控数据并构建全链路观测,确保监控系统能够反映出整个应用和服务生态的健康和表现。 -
涵盖从底层硬件到应用层再到外部服务(如 RDMA 网络、OSS 存储、Redis 等)的综合监控策略。这个策略应该包括不仅仅是主机和网络的监控,还包括对依赖服务的监控。
-
进程级监控可以对操作系统运行的进程进行跟踪和分析,以了解进程的性能和资源利用情况。这是实现系统级监控的关键部分,旨在提供运行在服务器上的应用程序的健康和表现的透视图。 -
进程级监控除了会捕获进程的 CPU 使用率、进程的内存使用量、进程的磁盘读写情况等关键性能指标,还会收集进程的启动时间、打开的文件的句柄数、进程下调起的线程数量等。提供接近于实时的监控能力,做到即时的反馈,让系统管理员能够及时识别和解决问题。 -
进程级监控,为管理员提供更加丰富的故障诊断手段,帮助识别导致系统性能下降或故障的进程,可能是某些进程内存泄露、高 CPU 使用率或其他资源争用等。
-
默认集成经过阿里云专家经验沉淀的 Grafana 大盘,包括 ECS Overivew 总览大盘、ECS Detail 详细大盘、GPU Overview 总览大盘、GPU Detail 详细大盘、Node-process 进程级大盘。 -
真正做到一键接入主机可观测,开箱即用。
实践方式
Cloud Native
阿里云 Prometheus 主机监控服务的接入效果总结如下:
-
快速服务发现
-
实测每次大规模主机弹性伸缩(约 500 台规模)的发生,监控服务能够在一分钟内发现新的计算节点。
-
必要的 Exporter(Gpu-exporter、Node-exporter、Process-exporter)可以在一分钟内完成自动安装,这意味着每台服务器可以接近实时开始生成监控数据。