SPDK/PMDK 学习

SPDK针对整个存储服务和协议栈, 是高性能存储协议层的整体架构,PMDK侧重于Persistent Memory 的应用场景。 可以说是SPDK中一块针对Storage Class memory的独立部分。

SPDK: (Storage Performance development Kits)
https://spdk.io/
用于编写高性能、可伸缩、用户态存储应用程序的工具和库。
关键技术:

  • 将所有必需的驱动程序移至用户空间,这样就避免了系统调用,并允许从应用程序中进行零拷贝访问;
  • 轮询硬件任务的完成而不是依靠中断,这会降低总延迟和延迟抖动;
  • 避免在I/O路径中出现锁, 而是依赖消息传递。

组成说明:
1) 存储驱动层: 包括NVMe Device和 VirtIO PCIe, vhost-user两个大的部分
2)存储服务层: 主要是实现Block Device的抽象服务层,将下层的服务统一为一个统一的接口服务层, 诸如对逻辑卷、GPT、DPDK Encryption/Decryption, 针对底层服务是对如NVMe, Linux AIO, Ceph rbd,PMDK Blk,VirtIO BLK/SCSI,iSCSI,malloc, BlobFS, Blobstore的优化。
3) 存储协议层: 主要是包括了NVMe和SCSI两个层面,实现诸如Target 的支持,包括在native OS和Virtualization 环境下的支持。 另外也包括对Linux nbd的支持。
4) 工具: fio, nvme-cli, spdk-cli

PMDK: (Persistent Memory Development Kits)
https://pmem.io/
说明请直接参考引见: https://zhuanlan.zhihu.com/p/69345874


一个典型的DAOS架构中就包括了两个部分:

More details, refer to:https://software.intel.com/content/www/us/en/develop/articles/introduction-to-programming-with-persistent-memory-from-intel.html

posted @ 2020-12-01 10:28  Arcing  阅读(1265)  评论(0编辑  收藏  举报