PFS SPDK: Storage Performance Development Kit
4.21 MB
23 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
中文(简体) | .pdf | 3 |
摘要 | ||
文档介绍了基于SPDK的CurveBS PFS存储引擎的设计与实现。PFS作为存储引擎选择的原因包括其高可靠性、易于移植码以及适合低文件系统元数据需求。PFS+SPDK实现了部分读写的DMA支持,通过零拷贝技术减少内存copy和系统调用开销。其架构包括直接DMA读写、NVME内存对齐要求以及Zero-copy接口。性能测试显示非daemon模式可能带来更优性能。 | ||
AI总结 | ||
《PFS SPDK: Storage Performance Development Kit》文档内容总结如下:
1. **PFS+SPDK 的实现与优势**
- 通过不连续地址块组成一次IO,提升效率。
- 解决部分写并发冲突,引入并发range lock。
- CurveBS支持512字节读写,而部分盘仅支持4k单位读写。
2. **PFS+SPDK 的DMA支持**
- 提供`pfs_writev_dma`和`pfs_preadv_dma`接口,实现直接DMA读写。
- 内存需为DPDK的hugetlb内存,且满足NVME内存对齐要求。
- 支持零拷贝,避免用户态与内核态切换,提升效率。
3. **磁盘读写对比**
- 基于EXT4的存储引擎需通过系统调用,导致CPU拷贝数据,无法充分发挥NVME功能(如write zero)。
- PFS+SPDK模式减少CPU拷贝和系统调用开销,提升性能。
4. **选择PFS的原因**
- 代码熟悉度高,易于移植现有代码。
- 提供类POSIX文件接口,适合CurveBS对元数据要求不高的场景。
- 基于阿里开源PFS,具有产品级可靠性。
5. **对PFS的修改**
- 不再基于daemon模式,直接使用PFS Core API。
- 保持管理工具(如pfs ls、cp、rm)可用。
- 增加SPDK驱动支持。
6. **新增PFS接口**
- 增加`pfs_pwritev`和`pfs_preadv`接口,支持IO vector操作。
- 与brpc的iobuf对接,提升一次IO提交效率。
7. **PFS DMA总体架构**
- 支持零拷贝读写盘,但网络部分依赖内核TCP,未实现零拷贝。
- 非daemon模式预计性能更优,减少跨进程开销。
8. **当前进展与测试**
-CurveBS仍在测试中,部署和监控工具需更新。
- 通过`pfs daemon`进行性能测试,预计非daemon模式更快。
总结:文档重点介绍了PFS与SPDK的整合方案,通过DMA支持和零拷贝技术提升存储性能,解决了EXT4存储引擎的不足,并对PFS进行了定制化修改以适应CurveBS的需求。当前项目处于测试阶段,预计性能有较大提升空间。 |
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余
11 页请下载阅读 -
文档评分