change to hot scan
This commit is contained in:
parent
75e8b90cb9
commit
5917f83af2
@ -23,6 +23,11 @@
|
|||||||
#include "CLI/CLI.hpp"
|
#include "CLI/CLI.hpp"
|
||||||
#include "instant.h"
|
#include "instant.h"
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
static void black_box(const T &t) {
|
||||||
|
asm volatile("" ::"m"(t) : "memory");
|
||||||
|
}
|
||||||
|
|
||||||
struct Args {
|
struct Args {
|
||||||
size_t threads;
|
size_t threads;
|
||||||
size_t iterations;
|
size_t iterations;
|
||||||
@ -131,7 +136,7 @@ int main(int argc, char *argv[]) {
|
|||||||
tmp.resize(args.key_size, 'x');
|
tmp.resize(args.key_size, 'x');
|
||||||
key.emplace_back(std::move(tmp));
|
key.emplace_back(std::move(tmp));
|
||||||
}
|
}
|
||||||
if (args.mode == "get" || args.random) {
|
if (args.mode == "get" || args.random || args.mode == "scan") {
|
||||||
std::shuffle(keys.begin(), keys.end(), gen);
|
std::shuffle(keys.begin(), keys.end(), gen);
|
||||||
}
|
}
|
||||||
keys.emplace_back(std::move(key));
|
keys.emplace_back(std::move(key));
|
||||||
@ -150,6 +155,7 @@ int main(int argc, char *argv[]) {
|
|||||||
}
|
}
|
||||||
kv->Commit();
|
kv->Commit();
|
||||||
delete kv;
|
delete kv;
|
||||||
|
if (args.mode == "get") {
|
||||||
delete handle;
|
delete handle;
|
||||||
delete db;
|
delete db;
|
||||||
handles.clear();
|
handles.clear();
|
||||||
@ -157,6 +163,7 @@ int main(int argc, char *argv[]) {
|
|||||||
s = rocksdb::OptimisticTransactionDB::Open(options, args.path, cfd, &handles, &db);
|
s = rocksdb::OptimisticTransactionDB::Open(options, args.path, cfd, &handles, &db);
|
||||||
assert(s.ok());
|
assert(s.ok());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
handle = handles[0];
|
handle = handles[0];
|
||||||
for (size_t tid = 0; tid < args.threads; ++tid) {
|
for (size_t tid = 0; tid < args.threads; ++tid) {
|
||||||
@ -203,6 +210,8 @@ int main(int argc, char *argv[]) {
|
|||||||
auto *iter = db->NewIterator(ropt);
|
auto *iter = db->NewIterator(ropt);
|
||||||
iter->Seek(prefix);
|
iter->Seek(prefix);
|
||||||
while (iter->Valid()) {
|
while (iter->Valid()) {
|
||||||
|
black_box(iter->key());
|
||||||
|
black_box(iter->value());
|
||||||
iter->Next();
|
iter->Next();
|
||||||
}
|
}
|
||||||
delete iter;
|
delete iter;
|
||||||
|
|||||||
@ -81,7 +81,8 @@ fn main() {
|
|||||||
opt.sync_on_write = false;
|
opt.sync_on_write = false;
|
||||||
opt.over_provision = true; // large value will use lots of memeory
|
opt.over_provision = true; // large value will use lots of memeory
|
||||||
opt.inline_size = args.blob_size;
|
opt.inline_size = args.blob_size;
|
||||||
opt.tmp_store = args.mode != "get" && args.mode != "scan";
|
opt.tmp_store = args.mode != "get";
|
||||||
|
opt.cache_capacity = 3 << 30;
|
||||||
let mut saved = opt.clone();
|
let mut saved = opt.clone();
|
||||||
saved.tmp_store = false;
|
saved.tmp_store = false;
|
||||||
let mut db = Mace::new(opt.validate().unwrap()).unwrap();
|
let mut db = Mace::new(opt.validate().unwrap()).unwrap();
|
||||||
@ -96,7 +97,7 @@ fn main() {
|
|||||||
key.resize(args.key_size, b'x');
|
key.resize(args.key_size, b'x');
|
||||||
tk.push(key);
|
tk.push(key);
|
||||||
}
|
}
|
||||||
if args.random || args.mode == "get" {
|
if args.random || args.mode == "get" || args.mode == "scan" {
|
||||||
tk.shuffle(&mut rng);
|
tk.shuffle(&mut rng);
|
||||||
}
|
}
|
||||||
keys.push(tk);
|
keys.push(tk);
|
||||||
@ -110,11 +111,13 @@ fn main() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
pre_tx.commit().unwrap();
|
pre_tx.commit().unwrap();
|
||||||
|
if args.mode == "get" {
|
||||||
drop(db);
|
drop(db);
|
||||||
// re-open db
|
// re-open db
|
||||||
saved.tmp_store = true;
|
saved.tmp_store = true;
|
||||||
db = Mace::new(saved.validate().unwrap()).unwrap();
|
db = Mace::new(saved.validate().unwrap()).unwrap();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let barrier = Arc::new(std::sync::Barrier::new(args.threads));
|
let barrier = Arc::new(std::sync::Barrier::new(args.threads));
|
||||||
let total_ops = Arc::new(std::sync::atomic::AtomicUsize::new(0));
|
let total_ops = Arc::new(std::sync::atomic::AtomicUsize::new(0));
|
||||||
@ -131,6 +134,7 @@ fn main() {
|
|||||||
let st = start_time.clone();
|
let st = start_time.clone();
|
||||||
let val = value.clone();
|
let val = value.clone();
|
||||||
let prefix = format!("key_{tid}");
|
let prefix = format!("key_{tid}");
|
||||||
|
println!("prefix {}", prefix);
|
||||||
|
|
||||||
std::thread::spawn(move || {
|
std::thread::spawn(move || {
|
||||||
// coreid::bind_core(tid);
|
// coreid::bind_core(tid);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user