18、快速远程持久内存访问的挑战与解决方案

快速远程持久内存访问的挑战与解决方案

在当今的分布式系统中,快速远程持久内存访问以及持久日志的高效处理是至关重要的。本文将深入探讨如何利用 DMA 引擎提升 RPC 吞吐量,以及如何优化持久日志的性能。

1. DMA 引擎背景

现代 CPU 中的片上 DMA 引擎,如英特尔的 I/O 加速技术(IOAT)DMA 引擎,旨在加速高速网络和存储等应用中的内存复制操作。虽然处理器已经配备 DMA 引擎超过十年,但这些加速器的使用并不广泛。例如,谷歌在高速网络中使用 IOAT DMA 引擎将网络数据包从网卡的环形缓冲区复制到应用程序缓冲区。

过去,开发者忽视 DMA 加速的一个原因是其复制速度较低,甚至低于单个 CPU 核心的基本 memcpy 速度。不过,英特尔在 Skylake 及更新的处理器中将 DMA 引擎速度提高到了约 15 GB/s,AMD 的第二代 EPYC 处理器中的 DMA 引擎提供了高达 70 GB/s 的速率,这表明 DMA 加速对于未来更快的网络和非易失性内存(NVMM)是一种有前景的策略。

在软件支持方面,我们使用 DPDK 库中的用户空间驱动程序来操作 IOAT DMA 引擎。应用程序线程通过异步、无锁的 API 与 DMA 引擎交互,将工作描述符发布到每个线程的 DMA “通道”。需要注意的是,IOAT DMA 引擎操作的是物理地址,在 Linux 系统中,特权应用程序可以通过解析 /proc/self/pagemap 将虚拟地址转换为物理地址。我们使用在启动时分配的 2 MB 大页,并在首次转换后缓存物理地址,这样在稳定状态下,基准测试无需进行虚拟到物理地址的转换。

2. IOAT DMA 微基准测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值