fix rocksdb test code

This commit is contained in:
abbycin 2025-12-19 19:51:14 +08:00
parent 11ea5a1569
commit 67f7108399
Signed by: abby
GPG Key ID: B636E0F0307EF8EB
4 changed files with 39 additions and 17 deletions

View File

@ -4,6 +4,7 @@
#include <cstdio> #include <cstdio>
#include <fmt/base.h> #include <fmt/base.h>
#include <fmt/format.h> #include <fmt/format.h>
#include <iostream>
#include <memory> #include <memory>
#include <random> #include <random>
#include <rocksdb/cache.h> #include <rocksdb/cache.h>
@ -36,6 +37,7 @@ struct Args {
size_t key_size; size_t key_size;
size_t value_size; size_t value_size;
size_t insert_ratio; size_t insert_ratio;
size_t blob_size;
bool random; bool random;
std::string mode; std::string mode;
std::string path; std::string path;
@ -57,6 +59,7 @@ int main(int argc, char *argv[]) {
app.add_option("-t,--threads", args.threads, "Threads"); app.add_option("-t,--threads", args.threads, "Threads");
app.add_option("-k,--key-size", args.key_size, "Key Size"); 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("-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("-i,--iterations", args.iterations, "Iterations");
app.add_option("-r,--insert-ratio", args.insert_ratio, "Insert Ratio for mixed mode"); app.add_option("-r,--insert-ratio", args.insert_ratio, "Insert Ratio for mixed mode");
app.add_option("-p,--path", args.path, "DataBase Home"); app.add_option("-p,--path", args.path, "DataBase Home");
@ -107,7 +110,7 @@ int main(int argc, char *argv[]) {
rocksdb::ColumnFamilyOptions cfo{}; rocksdb::ColumnFamilyOptions cfo{};
cfo.enable_blob_files = true; cfo.enable_blob_files = true;
cfo.min_blob_size = 8192; cfo.min_blob_size = args.blob_size;
// use 1GB block cache // use 1GB block cache
auto cache = rocksdb::NewLRUCache(1 << 30); auto cache = rocksdb::NewLRUCache(1 << 30);
rocksdb::BlockBasedTableOptions table_options{}; rocksdb::BlockBasedTableOptions table_options{};
@ -186,7 +189,6 @@ int main(int argc, char *argv[]) {
handle = handles[0]; handle = handles[0];
auto *snapshot = db->GetSnapshot(); auto *snapshot = db->GetSnapshot();
for (size_t tid = 0; tid < args.threads; ++tid) { for (size_t tid = 0; tid < args.threads; ++tid) {
auto *tk = &keys[tid];
wg.emplace_back([&, tid] { wg.emplace_back([&, tid] {
std::string rval(args.value_size, '0'); std::string rval(args.value_size, '0');
auto prefix = std::format("key_{}", tid); auto prefix = std::format("key_{}", tid);
@ -196,6 +198,7 @@ int main(int argc, char *argv[]) {
if (!upper_bound.empty()) { if (!upper_bound.empty()) {
ropt.iterate_upper_bound = &upper_bound_slice; ropt.iterate_upper_bound = &upper_bound_slice;
} }
auto *tk = &keys[tid];
ropt.prefix_same_as_start = true; ropt.prefix_same_as_start = true;
ropt.snapshot = snapshot; ropt.snapshot = snapshot;
size_t round = 0; size_t round = 0;
@ -242,8 +245,10 @@ int main(int argc, char *argv[]) {
size_t n = 0; size_t n = 0;
while (iter->Valid()) { while (iter->Valid()) {
round += 1; round += 1;
black_box(iter->key()); auto k = iter->key();
black_box(iter->value()); auto v = iter->value();
black_box(k);
black_box(v);
iter->Next(); iter->Next();
n += 1; n += 1;
} }

View File

@ -1,5 +1,11 @@
#!/usr/bin/env bash #!/usr/bin/env bash
if [ "$#" -ne 1 ]
then
printf "\033[m$0 path\033[0m\n"
exit 1
fi
pushd . pushd .
cd .. cd ..
cargo build --release 1>/dev/null 2> /dev/null cargo build --release 1>/dev/null 2> /dev/null
@ -8,31 +14,32 @@ function samples() {
export RUST_BACKTRACE=full export RUST_BACKTRACE=full
kv_sz=(16 16 100 1024 1024 1024 16 10240) kv_sz=(16 16 100 1024 1024 1024 16 10240)
# set -x # set -x
db_root=$1
cnt=10000 cnt=10000
for ((i = 1; i <= $(nproc); i *= 2)) for ((i = 1; i <= $(nproc); i *= 2))
do do
for ((j = 0; j < ${#kv_sz[@]}; j += 2)) for ((j = 0; j < ${#kv_sz[@]}; j += 2))
do 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 if test $? -ne 0
then then
echo "insert threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" echo "insert threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail"
exit 1 exit 1
fi 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 if test $? -ne 0
then then
echo "get threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" echo "get threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail"
exit 1 exit 1
fi 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 if test $? -ne 0
then then
echo "mixed threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" echo "mixed threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail"
exit 1 exit 1
fi 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 if test $? -ne 0
then then
echo "mixed threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" 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 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 popd
./bin/python plot.py mace.csv ./bin/python plot.py mace.csv

View File

@ -1,5 +1,11 @@
#!/usr/bin/env bash #!/usr/bin/env bash
if [ "$#" -ne 1 ]
then
printf "\033[m$0 path\033[0m\n"
exit 1
fi
pushd . pushd .
cd ../rocksdb cd ../rocksdb
cmake --preset release 1>/dev/null 2>/dev/null 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() { function samples() {
kv_sz=(16 16 100 1024 1024 1024 16 10240) kv_sz=(16 16 100 1024 1024 1024 16 10240)
# set -x # set -x
db_root=$1
cnt=10000 cnt=10000
for ((i = 1; i <= $(nproc); i *= 2)) for ((i = 1; i <= $(nproc); i *= 2))
do do
for ((j = 0; j < ${#kv_sz[@]}; j += 2)) for ((j = 0; j < ${#kv_sz[@]}; j += 2))
do 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 if test $? -ne 0
then then
echo "insert threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" echo "insert threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail"
exit 1 exit 1
fi 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 if test $? -ne 0
then then
echo "get threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" echo "get threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail"
exit 1 exit 1
fi 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 if test $? -ne 0
then then
echo "mixed threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" echo "mixed threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail"
exit 1 exit 1
fi 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 if test $? -ne 0
then then
echo "mixed threads $i ksz ${kv_sz[j]} vsz ${kv_sz[j+1]} fail" 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 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 popd
./bin/python plot.py rocksdb.csv ./bin/python plot.py rocksdb.csv

View File

@ -105,8 +105,8 @@ fn main() {
if args.mode == "get" || args.mode == "scan" { if args.mode == "get" || args.mode == "scan" {
let pre_tx = db.begin().unwrap(); let pre_tx = db.begin().unwrap();
(0..args.threads).for_each(|tid| { (0..args.threads).for_each(|tid| {
for i in 0..args.iterations { for k in &keys[tid] {
pre_tx.put(&keys[tid][i], &*value).unwrap(); pre_tx.put(k, &*value).unwrap();
} }
}); });
pre_tx.commit().unwrap(); pre_tx.commit().unwrap();
@ -182,7 +182,10 @@ fn main() {
let iter = view.seek(prefix); let iter = view.seek(prefix);
for x in iter { for x in iter {
round += 1; 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"), _ => panic!("Invalid mode"),