fix rocksdb test code
This commit is contained in:
parent
11ea5a1569
commit
67f7108399
@ -4,6 +4,7 @@
|
||||
#include <cstdio>
|
||||
#include <fmt/base.h>
|
||||
#include <fmt/format.h>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <random>
|
||||
#include <rocksdb/cache.h>
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user