【续】ZNS SSD模拟器进行YCSB测试

由于官方YCSB测试需要硬盘搭载文件系统,使用ZenFS进行测试,发现编译问题报错,本人对Rocksdb及Java、Maven等不甚熟悉,采用YCSB-cpp进行测试。
本测试基于ZenFS文件系统,如未安装ZenFS请参照上一篇博客官方Github链接进行安装

YCSB-cpp安装

git clone https://github.com/ls4154/YCSB-cpp.git
cd YCSB-cpp
git submodule update --init
make

下载后进行YCSB-cpp的安装,但由于ZenFS非标准POSIX接口文件系统,需要修改代码进行文件系统适配。
修改Makefile如下:

# Extra options
DEBUG_BUILD ?=
EXTRA_CXXFLAGS ?= -I/home/spdk/Desktop/rocksdb/include
EXTRA_LDFLAGS ?= -L/home/spdk/Desktop/rocksdb  -lsnappy -lzstd -lbz2 -llz4  -lgflags -u zenfs_filesystem_reg -lzbd

接着修改 rocksdb/rocksdb_db.cc文件
在RocksdbDB::GetOptions定义处加入如下代码

if (!env_uri.empty() || !fs_uri.empty()) {
rocksdb::Status s = rocksdb::Env::CreateFromUri(rocksdb::ConfigOptions(), env_uri, fs_uri, &env, &env_guard);
if (!s.ok()) {
throw utils::Exception(std::string("RocksDB CreateFromUri: ") + s.ToString());
}
//加入这行代码
printf("env is nullptr ? %s %p filesystem %p\n",env ? "no" : "yes",env,env->GetFileSystem().get());
//
opt->env = env;
}

此外还要修改rocksdb.properties来指定fs_uri参数,我的文件参考如下

#rocksdb.dbname=/tmp/ycsb-rocksdb
//这里修改是因为创建ZenFS时会指定目录
rocksdb.dbname=/
rocksdb.format=single
rocksdb.destroy=false
rocksdb.fs_uri=zenfs://dev:nvme4n1
# Load options from file
#rocksdb.optionsfile=

# Below options are ignored if options file is used
rocksdb.compression=snappy
rocksdb.max_background_jobs=2
rocksdb.target_file_size_base=67108864
rocksdb.target_file_size_multiplier=1
rocksdb.max_bytes_for_level_base=268435456
rocksdb.write_buffer_size=67108864
rocksdb.max_open_files=-1
rocksdb.max_write_buffer_number=2
rocksdb.use_direct_io_for_flush_compaction=false
rocksdb.use_direct_reads=false
rocksdb.allow_mmap_writes=false
rocksdb.allow_mmap_reads=false
rocksdb.cache_size=8388608
rocksdb.bloom_bits=0

# deprecated since rocksdb 8.0
rocksdb.compressed_cache_size=0

rocksdb.increase_parallelism=false
rocksdb.optimize_level_style_compaction=false

修改完毕后再make然后按照YCSB-cpp官方指导进行测试

./ycsb -load -run -db rocksdb -P workloads/workloadb -P rocksdb/rocksdb.properties -s

运行结果

运行结果如图
运行结果

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
测试ZNS SSD(Zoned Namespace Solid State Drive),可以采取以下步骤: 1. 确定测试目标:在进行测试之前,首先要明确测试的目标和需求。例如,测试读取速度、写入速度、随机读取/写入速度、顺序读取/写入速度、数据完整性等。 2. 选择适当的测试工具:根据测试目标,选择合适的测试工具。常用的测试工具包括FIO、IOmeter、CrystalDiskMark等。这些工具可以帮助模拟不同的负载和执行各种读写操作。 3. 进行性能测试:使用选定的工具,进行性能测试。可以通过测试不同的文件大小、读取/写入混合负载、多线程负载等方式,来评估ZNS SSD的性能表现。记录测试结果,包括读取/写入速度、IOPS(每秒输入/输出操作数)、延迟等指标。 4. 进行数据一致性测试:为了确保ZNS SSD的数据完整性,在测试过程中需要进行数据一致性测试。可以使用校验和算法来验证写入和读取的数据是否一致,以确保数据在读写过程中没有出现错误。 5. 进行耐久性测试ZNS SSD通常具有更高的耐久性,可以进行更频繁的写入操作。可以通过反复进行写入/擦除测试,以评估其耐久性和寿命。 6. 进行其他测试:根据具体需求,还可以进行其他测试,如功耗测试、温度测试、兼容性测试等。 7. 分析和评估测试结果:根据测试结果,进行数据分析和评估。比较不同测试条件下的性能表现,确认ZNS SSD是否符合预期。 最后,根据测试结果,可以根据需求进行优化和调整,以提升ZNS SSD的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值