pdf文档 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 页请下载阅读 -
文档评分
请文明评论,理性发言.