From 67f71083998cbcfa95274c2d026cac57e74033f4 Mon Sep 17 00:00:00 2001 From: abbycin Date: Fri, 19 Dec 2025 19:51:14 +0800 Subject: [PATCH] fix rocksdb test code --- rocksdb/main.cpp | 13 +++++++++---- scripts/mace.sh | 17 ++++++++++++----- scripts/rocksdb.sh | 17 ++++++++++++----- src/main.rs | 9 ++++++--- 4 files changed, 39 insertions(+), 17 deletions(-) diff --git a/rocksdb/main.cpp b/rocksdb/main.cpp index 6f954ff..a539960 100644 --- a/rocksdb/main.cpp +++ b/rocksdb/main.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -36,6 +37,7 @@ struct Args { size_t key_size; size_t value_size; size_t insert_ratio; + size_t blob_size; bool random; std::string mode; std::string path; @@ -57,6 +59,7 @@ int main(int argc, char *argv[]) { app.add_option("-t,--threads", args.threads, "Threads"); app.add_option("-k,--key-size", args.key_size, "Key Size"); app.add_option("-v,--value-size", args.value_size, "Value Size"); + app.add_option("-b,--blob-size", args.value_size, "Blob Size"); app.add_option("-i,--iterations", args.iterations, "Iterations"); app.add_option("-r,--insert-ratio", args.insert_ratio, "Insert Ratio for mixed mode"); app.add_option("-p,--path", args.path, "DataBase Home"); @@ -107,7 +110,7 @@ int main(int argc, char *argv[]) { rocksdb::ColumnFamilyOptions cfo{}; cfo.enable_blob_files = true; - cfo.min_blob_size = 8192; + cfo.min_blob_size = args.blob_size; // use 1GB block cache auto cache = rocksdb::NewLRUCache(1 << 30); rocksdb::BlockBasedTableOptions table_options{}; @@ -186,7 +189,6 @@ int main(int argc, char *argv[]) { handle = handles[0]; auto *snapshot = db->GetSnapshot(); for (size_t tid = 0; tid < args.threads; ++tid) { - auto *tk = &keys[tid]; wg.emplace_back([&, tid] { std::string rval(args.value_size, '0'); auto prefix = std::format("key_{}", tid); @@ -196,6 +198,7 @@ int main(int argc, char *argv[]) { if (!upper_bound.empty()) { ropt.iterate_upper_bound = &upper_bound_slice; } + auto *tk = &keys[tid]; ropt.prefix_same_as_start = true; ropt.snapshot = snapshot; size_t round = 0; @@ -242,8 +245,10 @@ int main(int argc, char *argv[]) { size_t n = 0; while (iter->Valid()) { round += 1; - black_box(iter->key()); - black_box(iter->value()); + auto k = iter->key(); + auto v = iter->value(); + black_box(k); + black_box(v); iter->Next(); n += 1; } diff --git a/scripts/mace.sh b/scripts/mace.sh index 71124de..0606adb 100755 --- a/scripts/mace.sh +++ b/scripts/mace.sh @@ -1,5 +1,11 @@ #!/usr/bin/env bash +if [ "$#" -ne 1 ] +then + printf "\033[m$0 path\033[0m\n" + exit 1 +fi + pushd . cd .. cargo build --release 1>/dev/null 2> /dev/null @@ -8,31 +14,32 @@ function samples() { export RUST_BACKTRACE=full kv_sz=(16 16 100 1024 1024 1024 16 10240) # set -x + db_root=$1 cnt=10000 for ((i = 1; i <= $(nproc); i *= 2)) do for ((j = 0; j < ${#kv_sz[@]}; j += 2)) do - ./target/release/kv_bench --path /home/abby/mace_bench --threads $i --iterations $cnt --mode insert --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} + ./target/release/kv_bench --path $db_root --threads $i --iterations $cnt --mode insert --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} if test $? -ne 0 then echo "insert threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" exit 1 fi - ./target/release/kv_bench --path /home/abby/mace_bench --threads $i --iterations $cnt --mode get --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} + ./target/release/kv_bench --path $db_root --threads $i --iterations $cnt --mode get --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} if test $? -ne 0 then echo "get threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" exit 1 fi - ./target/release/kv_bench --path /home/abby/mace_bench --threads $i --iterations $cnt --mode mixed --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} --insert-ratio 30 + ./target/release/kv_bench --path $db_root --threads $i --iterations $cnt --mode mixed --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} --insert-ratio 30 if test $? -ne 0 then echo "mixed threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" exit 1 fi - ./target/release/kv_bench --path /home/abby/mace_bench --threads $i --iterations $cnt --mode scan --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} --insert-ratio 30 + ./target/release/kv_bench --path $db_root --threads $i --iterations $cnt --mode scan --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} --insert-ratio 30 if test $? -ne 0 then echo "mixed threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" @@ -43,6 +50,6 @@ function samples() { } echo mode,threads,key_size,value_size,insert_ratio,ops,elasped > scripts/mace.csv -samples 2>> scripts/mace.csv +samples $1 2>> scripts/mace.csv popd ./bin/python plot.py mace.csv diff --git a/scripts/rocksdb.sh b/scripts/rocksdb.sh index 63b8713..cd63969 100755 --- a/scripts/rocksdb.sh +++ b/scripts/rocksdb.sh @@ -1,5 +1,11 @@ #!/usr/bin/env bash +if [ "$#" -ne 1 ] +then + printf "\033[m$0 path\033[0m\n" + exit 1 +fi + pushd . cd ../rocksdb cmake --preset release 1>/dev/null 2>/dev/null @@ -8,30 +14,31 @@ cmake --build --preset release 1>/dev/null 2>/dev/null function samples() { kv_sz=(16 16 100 1024 1024 1024 16 10240) # set -x + db_root=$1 cnt=10000 for ((i = 1; i <= $(nproc); i *= 2)) do for ((j = 0; j < ${#kv_sz[@]}; j += 2)) do - ./build/release/rocksdb_bench --path /home/abby/rocksdb_tmp --threads $i --iterations $cnt --mode insert --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} + ./build/release/rocksdb_bench --path $db_root --threads $i --iterations $cnt --mode insert --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} if test $? -ne 0 then echo "insert threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" exit 1 fi - ./build/release/rocksdb_bench --path /home/abby/rocksdb_tmp --threads $i --iterations $cnt --mode get --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} + ./build/release/rocksdb_bench --path $db_root --threads $i --iterations $cnt --mode get --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} if test $? -ne 0 then echo "get threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" exit 1 fi - ./build/release/rocksdb_bench --path /home/abby/rocksdb_tmp --threads $i --iterations $cnt --mode mixed --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} --insert-ratio 30 + ./build/release/rocksdb_bench --path $db_root --threads $i --iterations $cnt --mode mixed --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} --insert-ratio 30 if test $? -ne 0 then echo "mixed threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" exit 1 fi - ./build/release/rocksdb_bench --path /home/abby/rocksdb_tmp --threads $i --iterations $cnt --mode scan --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} --insert-ratio 30 + ./build/release/rocksdb_bench --path $db_root --threads $i --iterations $cnt --mode scan --key-size ${kv_sz[j]} --value-size ${kv_sz[j+1]} --insert-ratio 30 if test $? -ne 0 then echo "mixed threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" @@ -42,6 +49,6 @@ function samples() { } echo mode,threads,key_size,value_size,insert_ratio,ops,elapsed > ../scripts/rocksdb.csv -samples 1>> ../scripts/rocksdb.csv +samples $1 1>> ../scripts/rocksdb.csv popd ./bin/python plot.py rocksdb.csv diff --git a/src/main.rs b/src/main.rs index b7c0ea6..02b442c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -105,8 +105,8 @@ fn main() { if args.mode == "get" || args.mode == "scan" { let pre_tx = db.begin().unwrap(); (0..args.threads).for_each(|tid| { - for i in 0..args.iterations { - pre_tx.put(&keys[tid][i], &*value).unwrap(); + for k in &keys[tid] { + pre_tx.put(k, &*value).unwrap(); } }); pre_tx.commit().unwrap(); @@ -182,7 +182,10 @@ fn main() { let iter = view.seek(prefix); for x in iter { round += 1; - std::hint::black_box(x); + let k = x.key(); + let v = x.val(); + std::hint::black_box(k); + std::hint::black_box(v); } } _ => panic!("Invalid mode"),