当前位置: 首页 > 专利查询>清华大学专利>正文

一种基于制造技术

技术编号:39662164 阅读:19 留言:0更新日期:2023-12-11 18:24
本发明专利技术公开了一种基于

【技术实现步骤摘要】
一种基于RDMA的持久性内存存储方法和系统


[0001]本专利技术涉及非易失性主存存储
,尤其涉及一种基于
RDMA
的持久性内存存储方法和系统


技术介绍

[0002]持久性内存
(Persistent Memory)
是一种新型存储介质

与普通内存相似,持久性内存可以直接插在服务器的内存槽上,因此
CPU
可以通过
load/store
指令进行持久性内存的读写

与传统硬盘相似,持久性内存能够持久地存储数据,即掉电后数据不丢

英特尔公司于
2019
年推出了首款可大规模商用持久性内存:傲腾持久性内存

傲腾持久性内存单条容量有三种配置:
128GB、256GB

512GB。
单条傲腾持久性内存的写带宽约为
2GB/s
,读带宽约为
6GB/s。
傲腾持久性内存的内部介质读写粒度是
256
字节;因此,当
CPU
发出的持久性内存写请求小于
256
字节时,傲腾持久性内存内部会触发读后写操作,造成写放大,严重影响持久性内存的可用带宽

傲腾持久性内存内部具有写合并缓冲区,它会将地址相邻的写请求合并,然后写入介质,由此避免昂贵的读后写操作

[0003]远程内存直接访问
(RDMA)/>是一种高速网络技术,具有低延迟
(
往返延迟小于2微秒
)
和高带宽
(100Gbps)
的特点
。RDMA
支持两种通信原语:消息原语和内存原语

消息原语包括
send

receive
,接收端需要通过
receive
原语初始化接收队列;发送端通过
send
原语将数据发送给接收端

内存原语包括
write

read
;发送端通过内存原语直接读写接收端的内存,且接收端的
CPU
不感知

相比于消息原语,内存原语具有更低的延迟和
CPU
使用率

[0004]利用
RDMA
网络连接访问持久性内存能够提供低延迟

高带宽的远程存储服务

现有的两种方法均存在严重的性能问题

第一种方法是通过
RDMA

write
原语对接收端持久性内存进行写操作;然而,当存在大量发送端线程并发访问且写请求较小时,这种方法会产生严重的持久性内存设备写放大

这是由于不同发送端线程的写请求的地址一般不连续,导致接收端的持久性内存产生大量的随机小写,导致严重的设备写放大

第二种方法是使用基于
RDMA
的远程过程调用
(Remote Procedure Call

RPC)
进行远程持久性内存的写操作,该方法会在写操作的关键路径上引入接收端
CPU
的排队和执行延迟,导致系统性能下降


技术实现思路

[0005]本专利技术的目的旨在至少解决上述的技术缺陷之一

[0006]为此,本专利技术的一个目的在于提出一种基于
RDMA
的持久性内存存储方法和系统

可有效减少持久性内存的设备写放大,提高持久性内存的存储性能

为实现上述目的,本专利技术提供如下技术方案:一种基于
RDMA
的持久性内存存储方法和系统

[0007]本专利技术提供一种基于
RDMA
的持久性内存存储方法,包括以下步骤:
[0008]接收端通过
RDMA
网络连接获取持久性内存写请求,其中,所述接收端安装有
RDMA
网卡和持久性内存,所述持久性内存支持被接收端网卡直接读写,且所述接收端后台线程
周期性分配空闲的持久性内存区域,生成新的接收块描述符加入共享接收队列中;
[0009]若接收端
RDMA
网卡判定当前接收块描述符指向的持久性内存区域已满时,从共享接收队列中取出新的接收块描述符作为当前接收块描述符;
[0010]所述接收端
RDMA
网卡将写请求中的数据拷贝至当前接收块描述符指向的持久性内存区域的尾部,其中,接收块描述符用于描述一块持久性内存区域;
[0011]所述接收端
RDMA
网卡将确认消息返回给该写请求的发送端线程

[0012]进一步的,接收端通过
RDMA
网络连接获取持久性内存写请求,具体为,
[0013]所述接收端通过
RDMA
网络连接获取一个或多个发送端发送的持久性内存写请求,其中,所述发送端也安装有
RDMA
网卡,多个所述发送端线程位于相同的发送端或者不同的发送端

[0014]进一步的,接收端
RDMA
网卡判定当前接收块描述符指向的持久性内存区域已满,具体为,
[0015]所述当前接收块描述符的尾部偏移值与所述写请求的数据的字节数之和,大于所述当前接收块描述符的字节数时,所述接收端
RDMA
网卡判定所述当前接收块描述符指向的持久性内存区域已满,
[0016]其中,所述接收块描述符包括所述持久性内存区域的首地址和持久性内存区域的字节数

[0017]进一步的,所述接收端网卡判定当前接收块描述符指向的持久性内存区域已满,从共享接收队列中取出新的接收描述符作为当前接收块描述符,并对应更新当前接收块描述符指向的持久性内存区域的地址和字节数,设置所述当前接收块描述符的尾部偏移值为初始值0,将写请求中的数据拷贝至当前接收块描述符指向的持久性内存区域的尾部

[0018]进一步的,所述接收端网卡将来自不同
RDMA
连接的写请求中的数据存储至所述共享接收队列中的接收块描述符指向的持久性内存区域

[0019]进一步的,所述接收端
RDMA
网卡将来自不同发送端线程的持久性内存写请求中的数据写入至持久性内存区域的连续地址空间中

[0020]进一步的,所述接收端
RDMA
网卡将写请求中的数据拷贝至当前接收块描述符指向的持久性内存区域的尾部,具体为,
[0021]所述接收端
RDMA
网卡将数据存储在持久性内存介质上,
[0022]其中,所述持久性内存写本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.
一种基于
RDMA
的持久性内存存储方法,其特征在于,所述方法包括,接收端通过
RDMA
网络连接获取持久性内存写请求,其中,所述接收端安装有
RDMA
网卡和持久性内存,所述持久性内存支持被接收端网卡直接读写,且所述接收端后台线程周期性分配空闲的持久性内存区域,生成新的接收块描述符加入共享接收队列中;若接收端
RDMA
网卡判定当前接收块描述符指向的持久性内存区域已满时,从共享接收队列中取出新的接收块描述符作为当前接收块描述符;所述接收端
RDMA
网卡将写请求中的数据拷贝至当前接收块描述符指向的持久性内存区域的尾部,其中,接收块描述符用于描述一块持久性内存区域;所述接收端
RDMA
网卡将确认消息返回给该写请求的发送端线程
。2.
根据权利要求1所述的一种基于
RDMA
的持久性内存存储方法,其中,接收端通过
RDMA
网络连接获取持久性内存写请求,具体为,所述接收端通过
RDMA
网络连接获取一个或多个发送端发送的持久性内存写请求,其中,所述发送端也安装有
RDMA
网卡,多个所述发送端线程位于相同的发送端或者不同的发送端
。3.
根据权利要求1或2所述的一种基于
RDMA
的持久性内存存储方法,其中,接收端
RDMA
网卡判定当前接收块描述符指向的持久性内存区域已满,具体为,所述当前接收块描述符的尾部偏移值与所述写请求的数据的字节数之和,大于所述当前接收块描述符的字节数时,所述接收端
RDMA
网卡判定所述当前接收块描述符指向的持久性内存区域已满,其中,所述接收块描述符包括所述持久性内存区域的首地址和持久性内存区域的字节数
。4.
根据权利要求1或2所述的一种基于
RDMA
的持久性内存存储方法,其特征在于,所述接收端网卡判定当前接收块描述符指向的持久性内存区域已满,从共享接收队列中取出新的接收描述符作为当前接收块描述符,并对应更新当前接收块描述符指向的持久性内存区域的地址和字节数,设置所述当前接收块描述符的尾部偏移值为初始值0,将写请求中的数据拷贝至当前接收块描述符指向的持久性内存区域的尾部
。5.
根据权利要求1所述的一种基于
RDMA
的持久性内存存储方法,其特征在于,所述接收端网卡将来自不同
RDMA
连接的写请求中的数据存储至所述共享接收队列中的接收块描述符指向的持久性内存区域
。6.
根据权利要求5所述的一种基于
RDMA
的持久性内存存储方法,其特征在于,所述接收端
RDMA
网卡将来自不同发送端线程的持久性内存写请求中的数据写入至持久性内存区域的连续地址空间中
。7.
根据权利要求1所述的一种基于
RDMA
的持久性内存存储方法,其中,所述接收端
RDMA
网卡将写请求中的数据拷贝至当前接收块描述符指向的持久性内存区域的尾部,具体为,所述接收端
RDMA
网卡将数据存储在持久性内存介质上,其中,所述持久性内存写请求主要由
RDMA send
命令构成,包括数据和该数据的字节数信息
。8.
根据权利要求7所述的一种基于
RDMA
的持久性内存存储方法,其中,所述接收端
RDMA
网卡将数据存储在持久性内存介质上,具体为,
接收端
RDMA
网卡发送
PCIe
写操作将数据移动至持久性内存后,接收端
RDMA
网卡还发送1字节的
PCIe
读操作,其中,所述
RDMA send
是异步的,且1字节
PCIe
读操作的地址可以是任意的内存地址
。9.
根据权利要求1或2所述的一种基于
RDMA
的持久性内存存储方法,其特征在于,所述
RDMA
网卡检测硬件上是否发生有异常事件,当发生异常事件时
RDMA
网卡对网络消息进行重传,其中,所述
RDMA
网络连接为可靠连接
。10.
根据权利要求1所述的一种基于
RDMA
的持久性内存存储方法,其特征在于,所述接收端后台线程维护持久性内存分配器记录空闲的持久性内存区域
。11.
根据权利要求
10
所述的一种基于
RDMA
的持久性内存存储方法,其中,所述接收端记录空闲的持久性内存区域,具体为,所述接收端后台线程定位空闲区域位图,记录空闲的持久性内存区域
。12.
根据权利要求
1...

【专利技术属性】
技术研发人员:舒继武汪庆陆游游
申请(专利权)人:清华大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1