개요

SPDK는 Storage Performance Development Kit의 약자로, 성능, 확장성 그리고 usermode에서의 편리성을 제공하는 storage development kit이다. SPDK는 다음과 같은 서비스를 제공한다.

  • 모든 불필요한 드라이버를 userspace로 옮겨서, 시스템콜을 피하고 zero-copy가 application에서 가능하게 하였다.
  • 인터럽트보다는 polling으로 하드웨어와 통신하도록 하여서 인터럽트에서 오는 latency를 줄였다.
  • I/O path에서 발생할 수 있는 lock을 없애서 mesage passing에 의존하도록 하였다.

SPDK는 이와 같은 방법으로, user space, polled-mode, asynchrous, lockless NVMe 드라이버를 구현하였다. SPDK는 헤더파일 하나만 include함으로써 드라이버가 userspace에서 작성될 수 있도록 하였다.

SPDK는 userspace영역에서 디스트의 block단위의 처리까지 지원한다. 이를 통해서 NVME-oF, iSCSI, 그리고 vhost와 같은 기능들을 application단에서 자원할 수 있다. 또한 SPDK를 이용하여 application 제작자가 storage stack의 동작을 원하는 만큼 최적화 시킬 수 있게 되었다.