Public | Automated Build

Last pushed: 15 days 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.

Usage

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 \
        ljishen/spdk
    
  • 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 \
        /bin/bash
    

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/run_tests.sh. Since there are so many options for the db_bench, it is also worthwhile to read its home page right here.

Examples: https://github.com/ljishen/nvme-env/tree/master/benchmarks

Troubleshooting

  • When running the db_bench with script run_tests.sh, 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
Owner
ljishen
Source Repository

Comments (0)