Storage Performance Development Kit
SPDK NVMe over TCP Optimization on Arm
<aside> πΌ It is manage request to and from block devices. It typically is request queue and device driver.
SPDK provides https://spdk.io/doc/bdev.html as a user library
</aside>

<aside> πΌ NVME-of stands for an NVM Express over Fabrics
iSCI stands for Internet Small Computer Systems Interface which is an Internet Protocol-based storage networking standard for linking data storage facilities. It provide block-level access to storage device carrying SCI over TCP/IP
QEMU with vhost which its driver provide in-kernel virtIO device emulation on Linux
All of these can serving disks over the network to implement high performance storage target
</aside>
A concept of CPU separate memory which help OS segregate kernel space and user space. Normally, driver run in kernel space.
SPDK run in userspace (because command is from userspace) and directly interface to hardware.
β lib
β utility: basic math
β protocol: build block for a specific server
β storage server: map physical drive and fs of stackβ
β system: system level ex jsonrpc, spdk_env_dpdk