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

英特尔®DSA(Data Streaming Accelerator)数据流加速器是一种高性能的数据拷贝和数据转换加速器,已集成在八代神龙SPR机型的处理器中。ack-koordinator对已集成DSA硬件的节点,将自动开启DSA加速功能,用于优化DRAM、持久内存和各种数据处理进程中常见的数据流拷贝和转换。本文介绍如何使用硬件DSA进行数据流加速。

索引

前提条件

  • 已创建ACK Pro集群,且集群版本为1.18及以上版本。具体操作,请参见创建Kubernetes托管版集群

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

  • 已安装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

  • 已确保多NUMA机型为神龙裸金属ecs.ebmc、ecs.ebmg、ecs.ebmgn、ecs.ebmr、ecs.ebmhfc、ecs.scc等五、 六、七、八代机型。

    说明

    内存就近访问加速功能尤其对ecs.ebmc8i.48xlarge、ecs.c8i.32xlarge、ecs.g8i.48xlarge的八代机型提供更好的支持。关于ECS实例规格族,请参见ECS实例规格

DSA加速功能的优势

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

  • 提升节点上数据密集型工作负载的数据处理效能,优化OS内核中内存均衡、规整等的内存操作,提升整机内存的性能。
  • 对于ack-koordinator的内存就近访问加速功能,DSA可以明显提升单次处理的速度,有效降低CPU核时。远端内存使用量越大,加速效果越明显,十万级到百万级内存页有30%~200%的速度提升和CPU节省。迁移约1.7 GB应用内存至本地,与无DSA硬件相比,迁移耗时降低至31.25%,带宽提升至320.00%。
    重要 本文中提供的测试数据仅为理论值(参考值),实际数据以您的操作环境为准。
    DSA

关于DSA更多信息,请参见Intel官方文档

使用DSA加速功能

ack-koordinator组件对已集成DSA硬件的节点,将自动开启DSA加速功能,您只需在集群中部署该组件即可使用DSA加速功能,无需额外配置。关于ack-koordinator的内存就近访问加速功能,请参见多NUMA机型的容器内存就近访问加速

验证DSA加速功能

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

测试环境

DSA加速功能测试需要多NUMA架构机型,例如ecs.ebmc8i.48xlarge、ecs.c8i.32xlarge、ecs.g8i.48xlarge等。本文选用测试机型为ecs.ebmc8i.48xlarge。

测试步骤
  1. 登录测试节点,执行以下指令,确认处理器已集成DSA硬件。
    ls /sys/bus/dsa

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

  2. 部署测试应用,并为其开启内存就近访问加速功能。
    推荐使用内存密集型应用Redis。
测试结论

对26.12 GB Redis远端内存进行就近访问加速所需的迁移时间,与CPU消耗(百万级内存页数)对比如下表所示。

测试场景迁移时间(s)CPU使用率核时(s)
关闭DSA加速功能9.6491.0009.649
开启DSA加速功能4.9280.6683.292

结果说明:在DSA加速功能触发的内存迁移中,实际耗时降低至51.8%,平均CPU消耗降低至66.8% ,所需核时降低至34.1%。DSA可以提升内存迁移的速度,并降低CPU消耗。

阿里云首页 容器服务Kubernetes版 相关技术圈