使用硬件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更多信息,请参见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。
测试步骤- 登录测试节点,执行以下指令,确认处理器已集成DSA硬件。
ls /sys/bus/dsa
预期输出无报错且目录非空,表明处理器已集成DSA硬件。
- 部署测试应用,并为其开启内存就近访问加速功能。推荐使用内存密集型应用Redis。
- 关于创建Redis应用的具体操作,请参见创建部署Redis应用。
- 关于开启内存就近访问加速功能的具体操作,请参见通过Policy开启内存就近加速访问功能。
对26.12 GB 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消耗。