Change benchmark path to target/ or OUT_DIR
Also reduce some code duplication with cleanup_dirs fn.
This commit is contained in:
parent
c46b2541fe
commit
5216952691
|
@ -1089,6 +1089,15 @@ dependencies = [
|
|||
"version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memmap"
|
||||
version = "0.6.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memoffset"
|
||||
version = "0.2.1"
|
||||
|
@ -2259,6 +2268,7 @@ dependencies = [
|
|||
"fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -3003,6 +3013,7 @@ dependencies = [
|
|||
"checksum make-cmd 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a8ca8afbe8af1785e09636acb5a41e08a765f5f0340568716c18a8700ba3c0d3"
|
||||
"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
|
||||
"checksum memchr 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "db4c41318937f6e76648f42826b1d9ade5c09cafb5aef7e351240a70f39206e9"
|
||||
"checksum memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2ffa2c986de11a9df78620c01eeaaf27d94d3ff02bf81bfcca953102dd0c6ff"
|
||||
"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3"
|
||||
"checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0"
|
||||
"checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425"
|
||||
|
|
|
@ -4,7 +4,8 @@ extern crate test;
|
|||
|
||||
use rand::{thread_rng, Rng};
|
||||
use solana_runtime::appendvec::AppendVec;
|
||||
use std::path::Path;
|
||||
use std::env;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||
use std::sync::{Arc, RwLock};
|
||||
use std::thread::spawn;
|
||||
|
@ -13,10 +14,17 @@ use test::Bencher;
|
|||
const START_SIZE: u64 = 4 * 1024 * 1024;
|
||||
const INC_SIZE: u64 = 1 * 1024 * 1024;
|
||||
|
||||
fn get_appendvec_bench_path(path: &str) -> PathBuf {
|
||||
let out_dir = env::var("OUT_DIR").unwrap_or_else(|_| "target".to_string());
|
||||
let mut buf = PathBuf::new();
|
||||
buf.push(&format!("{}/{}", out_dir, path));
|
||||
buf
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn appendvec_atomic_append(bencher: &mut Bencher) {
|
||||
let path = Path::new("/media/nvme0/bench/bench_append");
|
||||
let mut vec = AppendVec::<AtomicUsize>::new(path, true, START_SIZE, INC_SIZE);
|
||||
let path = get_appendvec_bench_path("bench_append");
|
||||
let mut vec = AppendVec::<AtomicUsize>::new(&path, true, START_SIZE, INC_SIZE);
|
||||
bencher.iter(|| {
|
||||
if vec.append(AtomicUsize::new(0)).is_none() {
|
||||
assert!(vec.grow_file().is_ok());
|
||||
|
@ -28,9 +36,9 @@ fn appendvec_atomic_append(bencher: &mut Bencher) {
|
|||
|
||||
#[bench]
|
||||
fn appendvec_atomic_random_access(bencher: &mut Bencher) {
|
||||
let path = Path::new("/media/nvme0/bench/bench_ra");
|
||||
let mut vec = AppendVec::<AtomicUsize>::new(path, true, START_SIZE, INC_SIZE);
|
||||
let size = 10_000_000;
|
||||
let path = get_appendvec_bench_path("bench_ra");
|
||||
let mut vec = AppendVec::<AtomicUsize>::new(&path, true, START_SIZE, INC_SIZE);
|
||||
let size = 1_000_000;
|
||||
for _ in 0..size {
|
||||
if vec.append(AtomicUsize::new(0)).is_none() {
|
||||
assert!(vec.grow_file().is_ok());
|
||||
|
@ -46,9 +54,9 @@ fn appendvec_atomic_random_access(bencher: &mut Bencher) {
|
|||
|
||||
#[bench]
|
||||
fn appendvec_atomic_random_change(bencher: &mut Bencher) {
|
||||
let path = Path::new("/media/nvme0/bench/bench_rax");
|
||||
let mut vec = AppendVec::<AtomicUsize>::new(path, true, START_SIZE, INC_SIZE);
|
||||
let size = 10_000_000;
|
||||
let path = get_appendvec_bench_path("bench_rax");
|
||||
let mut vec = AppendVec::<AtomicUsize>::new(&path, true, START_SIZE, INC_SIZE);
|
||||
let size = 1_000_000;
|
||||
for _ in 0..size {
|
||||
if vec.append(AtomicUsize::new(0)).is_none() {
|
||||
assert!(vec.grow_file().is_ok());
|
||||
|
@ -70,9 +78,9 @@ fn appendvec_atomic_random_change(bencher: &mut Bencher) {
|
|||
|
||||
#[bench]
|
||||
fn appendvec_atomic_random_read(bencher: &mut Bencher) {
|
||||
let path = Path::new("/media/nvme0/bench/bench_read");
|
||||
let mut vec = AppendVec::<AtomicUsize>::new(path, true, START_SIZE, INC_SIZE);
|
||||
let size = 100_000_000;
|
||||
let path = get_appendvec_bench_path("bench_read");
|
||||
let mut vec = AppendVec::<AtomicUsize>::new(&path, true, START_SIZE, INC_SIZE);
|
||||
let size = 1_000_000;
|
||||
for _ in 0..size {
|
||||
if vec.append(AtomicUsize::new(0)).is_none() {
|
||||
assert!(vec.grow_file().is_ok());
|
||||
|
@ -90,12 +98,12 @@ fn appendvec_atomic_random_read(bencher: &mut Bencher) {
|
|||
|
||||
#[bench]
|
||||
fn appendvec_concurrent_lock_append(bencher: &mut Bencher) {
|
||||
let path = Path::new("bench_lock_append");
|
||||
let path = get_appendvec_bench_path("bench_lock_append");
|
||||
let vec = Arc::new(RwLock::new(AppendVec::<AtomicUsize>::new(
|
||||
path, true, START_SIZE, INC_SIZE,
|
||||
&path, true, START_SIZE, INC_SIZE,
|
||||
)));
|
||||
let vec1 = vec.clone();
|
||||
let size = 100_000_000;
|
||||
let size = 1_000_000;
|
||||
let count = Arc::new(AtomicUsize::new(0));
|
||||
let count1 = count.clone();
|
||||
spawn(move || loop {
|
||||
|
@ -130,12 +138,12 @@ fn appendvec_concurrent_lock_append(bencher: &mut Bencher) {
|
|||
|
||||
#[bench]
|
||||
fn appendvec_concurrent_get_append(bencher: &mut Bencher) {
|
||||
let path = Path::new("bench_get_append");
|
||||
let path = get_appendvec_bench_path("bench_get_append");
|
||||
let vec = Arc::new(RwLock::new(AppendVec::<AtomicUsize>::new(
|
||||
path, true, START_SIZE, INC_SIZE,
|
||||
&path, true, START_SIZE, INC_SIZE,
|
||||
)));
|
||||
let vec1 = vec.clone();
|
||||
let size = 100_000_000;
|
||||
let size = 1_000_000;
|
||||
let count = Arc::new(AtomicUsize::new(0));
|
||||
let count1 = count.clone();
|
||||
spawn(move || loop {
|
||||
|
|
|
@ -68,6 +68,7 @@ $program \
|
|||
$maybe_no_leader_rotation \
|
||||
--identity "$SOLANA_CONFIG_DIR"/bootstrap-leader.json \
|
||||
--ledger "$SOLANA_CONFIG_DIR"/bootstrap-leader-ledger \
|
||||
--accounts "$SOLANA_CONFIG_DIR"/bootstrap-leader-accounts \
|
||||
--rpc-port 8899 \
|
||||
> >($bootstrap_leader_logger) 2>&1 &
|
||||
pid=$!
|
||||
|
|
|
@ -157,6 +157,7 @@ if ((!self_setup)); then
|
|||
fullnode_id_path=$SOLANA_CONFIG_DIR/fullnode-id.json
|
||||
fullnode_json_path=$SOLANA_CONFIG_DIR/fullnode.json
|
||||
ledger_config_dir=$SOLANA_CONFIG_DIR/fullnode-ledger
|
||||
accounts_config_dir=$SOLANA_CONFIG_DIR/fullnode-accounts
|
||||
else
|
||||
mkdir -p "$SOLANA_CONFIG_DIR"
|
||||
fullnode_id_path=$SOLANA_CONFIG_DIR/fullnode-id-x$self_setup_label.json
|
||||
|
@ -181,6 +182,7 @@ else
|
|||
}
|
||||
|
||||
ledger_config_dir=$SOLANA_CONFIG_DIR/fullnode-ledger-x$self_setup_label
|
||||
accounts_config_dir=$SOLANA_CONFIG_DIR/fullnode-accounts-x$self_setup_label
|
||||
fi
|
||||
|
||||
[[ -r $fullnode_id_path ]] || {
|
||||
|
@ -256,6 +258,7 @@ $program \
|
|||
--identity "$fullnode_json_path" \
|
||||
--network "$leader_address" \
|
||||
--ledger "$ledger_config_dir" \
|
||||
--accounts "$accounts_config_dir" \
|
||||
> >($fullnode_logger) 2>&1 &
|
||||
pid=$!
|
||||
oom_score_adj "$pid" 1000
|
||||
|
|
|
@ -13,7 +13,8 @@ use solana_sdk::signature::{Keypair, KeypairUtil};
|
|||
use solana_sdk::transaction::Transaction;
|
||||
use solana_sdk::vote_program;
|
||||
use std::collections::BTreeMap;
|
||||
use std::fs::{create_dir_all, read_dir, remove_dir_all};
|
||||
use std::env;
|
||||
use std::fs::{create_dir_all, remove_dir_all};
|
||||
use std::path::Path;
|
||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||
use std::sync::{Arc, Mutex, RwLock};
|
||||
|
@ -167,16 +168,20 @@ pub struct Accounts {
|
|||
paths: String,
|
||||
}
|
||||
|
||||
impl Drop for Accounts {
|
||||
fn drop(&mut self) {
|
||||
let paths: Vec<String> = self.paths.split(',').map(|s| s.to_string()).collect();
|
||||
fn get_paths_vec(paths: &str) -> Vec<String> {
|
||||
paths.split(',').map(|s| s.to_string()).collect()
|
||||
}
|
||||
|
||||
fn cleanup_dirs(paths: &str) {
|
||||
let paths = get_paths_vec(&paths);
|
||||
paths.iter().for_each(|p| {
|
||||
let _ignored = remove_dir_all(p);
|
||||
});
|
||||
let entry = read_dir(ACCOUNTSDB_DIR);
|
||||
if entry.is_ok() && entry.unwrap().count() == 0 {
|
||||
let _ignored = remove_dir_all(ACCOUNTSDB_DIR);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
impl Drop for Accounts {
|
||||
fn drop(&mut self) {
|
||||
cleanup_dirs(&self.paths);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -210,16 +215,14 @@ impl AccountsDB {
|
|||
}
|
||||
|
||||
fn add_storage(&self, paths: &str) {
|
||||
let paths: Vec<String> = paths.split(',').map(|s| s.to_string()).collect();
|
||||
let paths = get_paths_vec(&paths);
|
||||
let mut stores: Vec<AccountStorage> = vec![];
|
||||
paths.iter().for_each(|p| {
|
||||
let keypair = Keypair::new();
|
||||
let path = format!("{}/{}", p, keypair.pubkey());
|
||||
let storage = AccountStorage {
|
||||
appendvec: self.new_account_storage(&path),
|
||||
appendvec: self.new_account_storage(&p),
|
||||
status: AtomicUsize::new(AccountStorageStatus::StorageAvailable as usize),
|
||||
count: AtomicUsize::new(0),
|
||||
path: path.to_string(),
|
||||
path: p.to_string(),
|
||||
};
|
||||
stores.push(storage);
|
||||
});
|
||||
|
@ -652,7 +655,15 @@ impl Accounts {
|
|||
fn make_new_dir() -> String {
|
||||
static ACCOUNT_DIR: AtomicUsize = AtomicUsize::new(0);
|
||||
let dir = ACCOUNT_DIR.fetch_add(1, Ordering::Relaxed);
|
||||
format!("{}/{}", ACCOUNTSDB_DIR, dir.to_string())
|
||||
let out_dir = env::var("OUT_DIR").unwrap_or_else(|_| "target".to_string());
|
||||
let keypair = Keypair::new();
|
||||
format!(
|
||||
"{}/{}/{}/{}",
|
||||
out_dir,
|
||||
ACCOUNTSDB_DIR,
|
||||
keypair.pubkey(),
|
||||
dir.to_string()
|
||||
)
|
||||
}
|
||||
|
||||
fn make_default_paths() -> String {
|
||||
|
@ -1341,13 +1352,6 @@ mod tests {
|
|||
true
|
||||
}
|
||||
|
||||
fn cleanup_dirs(paths: &str) {
|
||||
let paths: Vec<String> = paths.split(',').map(|s| s.to_string()).collect();
|
||||
paths.iter().for_each(|p| {
|
||||
let _ignored = remove_dir_all(p);
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_account_one() {
|
||||
let paths = "one".to_string();
|
||||
|
|
|
@ -746,7 +746,7 @@ mod tests {
|
|||
|
||||
// Close the validator so that rocksdb has locks available
|
||||
validator_exit();
|
||||
let (bank_forks, bank_forks_info, _, _) = new_banks_from_blocktree(&validator_ledger_path, "accounts");
|
||||
let (bank_forks, bank_forks_info, _, _) = new_banks_from_blocktree(&validator_ledger_path, "");
|
||||
let bank = bank_forks.working_bank();
|
||||
let entry_height = bank_forks_info[0].entry_height;
|
||||
|
||||
|
|
Loading…
Reference in New Issue