fix rocksdb test code
This commit is contained in:
parent
11ea5a1569
commit
67f7108399
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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"),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user