搜索

pdf文档 PFS SPDK: Storage Performance Development Kit

4.21 MB 23 页 0 下载 57 浏览 0 评论 0 收藏
语言 格式 评分
中文(简体)
.pdf
3
摘要
文档主要介绍了PFS与SPDK的集成与优化,重点讨论了PFS对SPDK的支持,包括DMA读写接口的实现、零拷贝技术的应用以及对部分读写操作的并发冲突解决。文档还展示了PFS在减少CPU内存拷贝、提高性能方面的优势,并通过测试数据验证了其性能提升效果。同时,文档提到了PFS在移植性和易用性方面的优势,以及未来可能的优化方向。
AI总结
《PFS SPDK: Storage Performance Development Kit》主要介绍了PFS与SPDK的结合实现及其在存储性能优化方面的应用。以下是文档内容的总结: ### 1. PFS+SPDK 的部分读写实现 - 某些盘只支持4K单位读写,但CurveBS支持512字节读写。 - 针对部分写操作的并发冲突,引入了并发的`range lock`机制来解决。 ### 2. PFS+SPDK 的DMA支持 - 提供了直接DMA读写接口: - `pfs_writev_dma` - `pfs_preadv_dma` - 要求内存为DPDK的hugetlb内存,且需符合NVME内存地址对齐要求(offset 512对齐)。 - 为零拷贝操作提供接口,减少CPU和系统调用的开销。 ### 3. PFS的修改与新增接口 - 基于阿里开源的PFS,不再使用daemon模式,直接使用PFS core API。 - 增加了SPDK驱动。 - 新增了`pfs_pwritev`和`pfs_preadv`接口,支持`IO vector`操作,主要用于与brpc的`iobuf`对接,提高IO提交效率。 ### 4. 为什么选择PFS - PFS支持类POSIX文件接口,与使用EXT4的存储引擎代码类似,便于移植现有代码。 - CurveBS对文件系统元数据的操作较少,对文件系统性能要求不高,适合PFS的应用场景。 - PFS具有产品级可靠性,且代码易于维护。 ### 5. 基于SPDK的CurveBS PFS存储引擎 - 目标是减少CPU内存拷贝开销,减少系统调用。 - 发挥某些被操作系统屏蔽的功能,如NVME的`write zero`功能。 - 根据阿里研究,在100Gbps网络带宽下,内存带宽成为性能瓶颈。 ### 6. 性能测试 - 测试了`pfs_write`、`pfs_write_dma`和`pfs_write_zero`接口的性能: - `pfs_write`:CPU时间1.32秒,耗时16.66秒。 - `pfs_write_dma`:CPU时间1.15秒,耗时16.66秒。 - `pfs_write_zero`:CPU时间1.14秒,耗时13.10秒。 - 使用fio进行4K随机写测试,IOPS达到14.5k,带宽56.7MiB/s。 ### 7. 进展与限制 - 当前进展:CurveBS的测试和工具更新仍在进行中。 - 限制:网络部分依赖内核TCP,尚未实现零拷贝。 ### 总结 PFS+SPDK的结合通过DMA支持和零拷贝接口显著提升了存储性能,减少了系统调用和CPU开销。尽管在网络部分仍有优化空间,但其在文件系统接口兼容性和性能优化方面具有显著优势,适合需要高性能存储的应用场景。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 11 页请下载阅读 -
文档评分
请文明评论,理性发言.