中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

使用SPDK CRC特性

SPDK中自带isal-crc32c与isal-crc16算法,在spdk21.01.1-for-KAE分支中,引入了华为自研的ksal-crc算法,自研的ksal-crc算法相较于isal2.29版本的crc算法有20% 以上的性能提升。本章节主要介绍在SPDK中如何对ksal-crc进行性能测试和系统测试。

性能测试

  1. 要使用ksal-crc模式算法,在编译SPDK步骤7中,需要配置编译选项 --with-ksal, 然后执行make -j 进行编译。
  2. 在单元测试中验证ksal-crc16性能,进入SPDK中的crc16单元测试模块,执行crc16_ut可执行程序进行验证。
    cd /home/spdk/test/unit/lib/util/crc16.c/
    ./crc16_ut

    执行./crc16_ut 默认取大小为4k的数据块进行100000次的crc16计算,然后取平均值,由于crc的计算非常快,以ns为单位才能统计到一次的计算时间,因此需要多取几次计算平均值才能得到一个较为稳定正确的数值。在执行中也可以指定块的大小、计算的次数、以及验证校验和(计算结果是否正确)。具体如何指定可执行 ./crc16_ut -h 查看。

  3. 在单元测试中验证ksal-crc32c性能,进入SPDK中的crc32c单元测试模块,执行crc32c_ut可执行程序进行验证。
    cd /home/spdk/test/unit/lib/util/crc32c.c/
    ./crc32c_ut
  4. 切换环境模式为isal,进入spdk目录,配置编译选项--without-ksal,然后执行make -j 进行编译。
    cd /home/spdk
    ./configure --with-crypto --with-reduce --without-ksal --with-crypto_openssl
    make -j
  5. 执行23进行isal-crc16与crc32c性能验证

系统测试

  1. 启动SPDK进程。
    ./build/bin/nvmf_tgt --wait-for-rpc
  2. 初始化程序框架。
    ./scripts/rpc.py framework_start_init
  3. 创建测试盘。
    ./scripts/rpc.py bdev_aio_create /dev/sda sda
    ./scripts/rpc.py bdev_crypto_create sda crypto crypto_openssl 0123456789123456 -c AES_CBC

    此处创建了一块加解密的bdev盘,也可以创建其他的bdev盘进行测试。

  4. 创建nvme盘然后挂载到系统上。
    ./scripts/rpc.py nvmf_create_transport -t TCP -u 16384 -m 8 -c 8192
    ./scripts/rpc.py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode2 -a -s SPDK00000000000001 -d SPDK_Controller1
    ./scripts/rpc.py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode2 crypto
    ./scripts/rpc.py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode2 -t TCP -a 90.90.82.112 -s 4420
    nvme discover -t tcp -a 90.90.82.112 -s 4420
    nvme connect -t tcp -n "nqn.2016-06.io.spdk:cnode2" -a 90.90.82.112 -s 4420 -g -G
  5. 利用fio工具对挂载的nvme盘进行读写测试。
    fio -filename=/dev/nvme0n1 -direct=1 -iodepth=64 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=10G -numjobs=1 -group_reporting -name=mytest --verify_pattern=0x12345678

    此处fio下发的读写数据是通过NVMe-oF协议与nvme盘进行传输的。在SPDK中,NVMe-oF协议会对传输的每个数据单元(pdu)进行校验,采用的就是crc算法,因此每次io操作都会进行一次crc计算。判断ksal-crc是否使能,在执行fio操作的过程中,可通过perf工具抓取SPDK进程的函数热点信息。然后在函数热点信息中查找是否有KsalCrc32c函数,如果存在该函数则说明ksal-crc使能成功。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词