以下均是参考链接
使用db_bench 对rocksdb进行性能压测
SPDK中常用的性能测试工具
Ubuntu安装Rocksdb并调试
火焰图辅助我们去分析性能,生成火焰图的步骤如下:
sudo /usr/src/linux-source-4.15.0/tools/perf/perf record -F 99 --call-graph dwarf -p 1165
sudo /usr/src/linux-source-4.15.0/tools/perf/perf report -n -f --stdio
sudo /usr/src/linux-source-4.15.0/tools/perf/perf script -i perf.data &> perf.unfold
sudo FlameGraph/stackcollapse-perf.pl perf.unfold &> perf.folded
sudo FlameGraph/flamegraph.pl perf.folded > perf.svg
上面需要安装perf和火焰图
Ubuntu 18.04中安装perf工具(复制/粘帐/回车 版)
火焰图直接去GITHUB上down下来就行
火焰图可能出现unknown情况,参考以下文章加个参数 --call-graph dwarf
使用 perf 进行性能分析时如何获取准确的调用栈
下面是我参考上面的文章测试时用的命令
- 无spdk的nvme
sudo fio -filename=/dev/nvme0n1 -direct=1 -iodepth 128 -thread=1 -rw=randrw -ioengine=libaio -bs=4k -runtime=60 -group_reporting=1 -verify=0 -ramp_time=0 -name=rand_read_4k
- spdk下的nvme
sudo /usr/src/fio/fio spdk_nvme2.fio
spdk_nvme2.fio文件内容:
[global]
ioengine=/home/vagrant/spdk/build/fio/spdk_nvme
thread=1
group_reporting=1
direct=1
verify=0
time_based=1
ramp_time=0
runtime=60
iodepth=128
rw=randrw
bs=4k
numjobs=1
[job]
filename=trtype=PCIe traddr=0000.00.0e.0 ns=1
- spdk下基于bdev的nvme
sudo /usr/src/fio/fio spdk_bdev1.fio
spdk_bdev1.fio文件内容如下
[global]
ioengine=spdk_bdev
spdk_json_conf=./examples/bdev/fio_plugin/bdev.json
thread=1
group_reporting=1
direct=1
verify=0
time_based=1
ramp_time=0
runtime=60
iodepth=128
rw=randrw
bs=4k
numjobs=1
[test]
filename=Malloc0
- rocksdb
随机读写测试
sudo ./db_bench --benchmarks="readrandomwriterandom,stats" --use_existing_keys=1 --use_existing_db=1 --num=10000000 --db=./db_bench_test --wal_dir=./db_bench_test
- SPDK下的rocksdb
sudo ./db_bench -spdk /usr/local/etc/spdk/rocksdb.json -spdk_bdev Nvme0n1 -spdk_cache_size 1024 --benchmarks="readrandomwriterandom,stats" --num=10000000 --db=./db_bench_test --wal_dir=./db_bench_test