Public | Automated Build

Last pushed: 10 months ago
Short Description
Storage Performance Development Kit
Full Description

SPDK (Storage Performance Development Kit) Docker Image

Simple image built following the official SPDK Documentation. This image intents to work with the NVMe device emulation image ljishen/qemu-nvme while can be also used in a system equipped with NVMe device.


The container startup process encompasses compiling the SPDK source so that it is aware of the underlying system supports, e.g. SSSE3, RDRAND. Relying on the docker build may cause errors like ERROR: This system does not support "XXXX". The container also sets up the BlobFS so that you can freely try db_bench for performance evaluation. Note that 5GB (2560 huge pages) is allocated by default.

  • When work with the NVMe device emulation image ljishen/qemu-nvme, start the container without argument

    docker run -ti \
        --privileged \
        --ipc host \
        -v /dev:/dev \
  • For other systems with external module(s) installed (check /lib/modules/$(uname -r)) and NVMe devices enabled

    docker run -ti \
        --privileged \
        --ipc host \
        -v /dev:/dev \
        ljishen/spdk \

This docker command bind-mounts to the /dev which is necessary since it needs to access /dev/uio0.
Here is the error message if we don't bind-mounts to /dev

EAL: Cannot open /dev/uio0: No such file or directory
EAL: Requested device 0000:00:04.0 cannot be used
mkfs.c:  77:spdk_mkfs_run: *ERROR*: bdev Nvme0n1 not found


Testing RocksDB with SPDK

The BlobFS Getting Started Guide has a detail instruction of how to run db_bench against a variety of workloads with test/blobfs/rocksdb/ Since there are so many options for the db_bench, it is also worthwhile to read its home page right here.



  • When running the db_bench with script, check the results in folder /root/spdk/test/blobfs/rocksdb/results/last. If you see messages in file insert_db_bench.txt similar to the following, you system may not have enough memory for the 5GB huge pages.

    EAL: Not enough memory available! Requested: 5120MB, available: XXXXMB
    EAL: FATAL: Cannot init memory
    EAL: Cannot init memory
    Failed to initialize DPDK
Docker Pull Command
Source Repository