SPDK: A Development Kit to Build High Performance Storage Applications

SPDK: A Development Kit to Build High Performance Storage Applications
复制标题

DOI:
10.1109/cloudcom.2017.14
复制
发表时间:
2017-12
期刊:
2017 IEEE International Conference on Cloud Computing Technology and Science (CloudCom)
影响因子:
--
通讯作者:
Ziye Yang;James R. Harris;Benjamin Walker;Daniel Verkamp;Changpeng Liu;Cunyin Chang;Gang Cao;J. Stern;Vishal Verma;Luse E. Paul
Ziye Yang;James R. Harris;Benjamin Walker;Daniel Verkamp;Changpeng Liu;Cunyin Chang;Gang Cao;J. Stern;Vishal Verma;Luse E. Paul
中科院分区:
其他
文献类型:
--
作者:
Ziye Yang;James R. Harris;Benjamin Walker;Daniel Verkamp;Changpeng Liu;Cunyin Chang;Gang Cao;J. Stern;Vishal Verma;Luse E. Paul

文献摘要

被引文献

相似文献

在新兴的快速存储设备(如NVMe固态硬盘)上构建高性能存储服务的需求非常强烈。遗憾的是,目前的存储软件栈不能满足这些要求,软件开销成为开发高性能存储应用程序的主要瓶颈。根据我们的性能分析结果,大部分存储软件开销是由上下文切换、数据复制、中断、资源同步等引起的内核I/O栈造成的。为了解决这些问题,我们提供了SPDK(存储性能开发工具包),这是一套用于编写高性能、可扩展的用户模式存储应用程序的工具和库。它通过将必要的驱动程序移动到用户空间并以轮询模式而不是中断模式操作来实现高性能,这消除了内核上下文切换和中断处理开销,还提供了无锁的资源访问。通过与SPDK集成,可以在这些快速存储设备上构建具有性能竞争力的存储应用程序。在我们的实验中,SPDK下的NVMe设备驱动程序的每CPU核心IOPS大约是内核NVMe驱动程序的6到10倍。一些存储应用也是在SPDK的框架上开发的,与现有的解决方案相比,获得了更好的每核性能。例如,SPDK NVMe over Fabric(NVMe-of)目标的效率是Linux Kernel NVMe-of目标解决方案的10倍。
There is strong demand on building high performance storage service upon emerging fast storage devices (e.g., NVMe SSDs). Unfortunately, current storage software stack cannot satisfy such requirements and the software overhead becomes a major bottleneck for developing high performance storage applications.According to our performance profiling results, most storage software overhead is caused by kernel I/O stacks due to context switch, data copy, interrupt, resource synchronization and etc. To address these issues, we provide SPDK (storage performance development kit), a set of tools and libraries for writing high performance, scalable, user-mode storage applications. It achieves high performance by moving the necessary drivers into user space and operating them in a polled mode instead of interrupt mode, which eliminates kernel context switch and interrupt handling overhead and also provides lockless resource access. Integrated with SPDK, performance competitive storage applications can be build upon those fast storage devices. In our experiments, the per cpu core IOPS of NVMe device driver in SPDK is about 6X to 10X better than the kernel NVMe driver. Some storage applications are also developed upon SPDK's framework and obtain much better per-core performance compared with the existing solutions. For example, SPDK NVMe over fabrics (NVMe-oF) target is 10X more efficient than Linux Kernel NVMe-oF target solution.