使用硬件DSA进行数据流加速

在数据密集型的工作负载中,如需优化DRAM、持久内存和各种数据处理进程中常见的数据流拷贝和转换,推荐您使用英特尔®DSA(Data Streaming Accelerator)数据流加速器。DSA是一种高性能的数据拷贝和数据转换加速器,已集成在八代神龙SPR机型的处理器中。在ACK集群中安装ack-koordinator组件后,集群将自动开启DSA加速功能。

DSA加速功能的优势

Intel® DSA硬件已集成在八代Intel机型处理器中,并基于Alibaba Cloud Linux 3增加了相关驱动。在ACK集群中使用此机型作为Worker节点,并安装ack-koordinator组件后,容器将自适应开启DSA加速功能,将相关内存操作从CPU卸载至DSA硬件,实现数据拷贝和转换的加速,并有效缓解过程中的CPU抖动。DSA加速功能更多优势如下。

  • 提升节点上数据密集型工作负载的数据处理效能,优化OS内核中内存均衡、规整等的内存操作,提升整机内存的性能。

  • 对于ack-koordinator的内存就近访问加速功能,DSA可以明显提升单次处理的速度,有效降低CPU核时。远端内存使用量越大,加速效果越明显:十万级到百万级内存页可实现30%~200%的速度提升和CPU节省。迁移约1.7 GB应用内存至本地,与无DSA硬件相比,迁移耗时降低至31.25%,带宽提升至320.00%。

    重要

    本文中提供的测试数据仅为理论值(参考值),实际数据以您的操作环境为准。

    image

前提条件

  • 已确保应用运行在多NUMA机型上,多NUMA机型为神龙裸金属八代机型。关于ECS实例规格族,请参见ECS实例规格

    本功能会为ecs.ebmc8i.48xlarge、ecs.c8i.32xlarge、ecs.g8i.48xlarge的八代机型提供更好的支持,推荐使用。

  • 已安装ack-koordinator组件(原ack-slo-manager),且组件版本为v1.2.0-ack1.2及以上版本。关于安装ack-koordinator组件的具体操作,请参见ack-koordinator(ack-slo-manager)

    说明

    ack-koordinator适配了原resource-controller组件的所有功能。如果您正在使用resource-controller,请您先卸载resource-controller,再安装ack-koordinator。关于卸载组件的具体操作,请参见卸载resource-controller

  • 已通过kubectl工具连接集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群

费用说明

ack-koordinator组件本身的安装和使用是免费的,不过需要注意的是,在以下场景中可能产生额外的费用:

  • ack-koordinator是非托管组件,安装后将占用Worker节点资源。您可以在安装组件时配置各模块的资源申请量。

  • ack-koordinator默认会将资源画像、精细化调度等功能的监控指标以Prometheus的格式对外透出。若您配置组件时开启了ACK-Koordinator开启Prometheus监控指标选项并使用了阿里云Prometheus服务,这些指标将被视为自定义指标并产生相应费用。具体费用取决于您的集群规模和应用数量等因素。建议您在启用此功能前,仔细阅读阿里云Prometheus计费说明,了解自定义指标的免费额度和收费策略。您可以通过账单和用量查询,监控和管理您的资源使用情况。

步骤一:启用DSA加速功能

ack-koordinator组件对已集成DSA硬件的节点会自动开启DSA加速功能。您只需在集群中配置合适的实例,部署ack-koordinator组件即可使用DSA加速功能。

说明

如果您已在集群中启用内存就近访问加速功能,DSA硬件节点能进一步提升加速效果。关于如何实现内存就近访问加速,请参见多NUMA机型的容器内存就近访问加速

步骤二:验证DSA加速功能

在保证数据安全的前提下,内存就近访问加速功能支持将绑核应用远端NUMA上的内存迁移至本地,提高本地访存命中率,为内存密集型的工作负载提供更好的访存性能。

下文以ecs.ebmc8i.48xlarge测试机型,验证DSA加速功能启用是否成功。

验证步骤

  1. 登录目标节点,执行以下命令,确认处理器已集成DSA硬件。

    关于如何登录测试节点,请参见ECS远程连接方式概述

    ls /sys/bus/dsa

    预期输出无报错且目录非空,表明处理器已集成DSA硬件。

  2. 部署测试应用,并为其开启内存就近访问加速功能。

    推荐使用内存密集型应用Redis进行部署和验证。请参见验证内存就近访问加速功能对应用性能的提升完成Redis应用的创建和内存就近访问加速功能的启用。

结果分析

下表对比在开启和不开启DSA加速功能的场景下,迁移26.12GB的Redis远端内存所需的迁移时间,与CPU消耗(百万级内存页数)对比如下表所示。

测试场景

迁移时间(s)

CPU使用率

核时(s)

关闭DSA加速功能

9.649

1.000

9.649

开启DSA加速功能

4.928

0.668

3.292

测试数据表明,在启用了DSA加速功能的内存迁移场景中,实际耗时降低至51.8%,平均CPU消耗降低至66.8%,所需核时降低至34.1%,表明DSA加速功能可以提升内存迁移的速度,并降低CPU消耗。

相关文档

DSA硬件节点能进一步提升内存就近访问加速功能的效果。关于如何实现内存就近访问加速,请参见多NUMA机型的容器内存就近访问加速