Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Fix cache distribution
  • Loading branch information
arkpar committed Sep 17, 2020
commit a9d0269157aabca42ea92f5db349ffa5e5995587
56 changes: 33 additions & 23 deletions client/db/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -227,36 +227,46 @@ pub fn open_database<Block: BlockT>(

// and now open database assuming that it has the latest version
let mut db_config = kvdb_rocksdb::DatabaseConfig::with_columns(NUM_COLUMNS);
let state_col_budget = (*cache_size as f64 * 0.9) as usize;
let other_col_budget = (cache_size - state_col_budget) / (NUM_COLUMNS as usize - 1);
let mut memory_budget = std::collections::HashMap::new();
let path = path.to_str()
.ok_or_else(|| sp_blockchain::Error::Backend("Invalid database path".into()))?;

let state_col = match db_type {
DatabaseType::Full => crate::columns::STATE,
DatabaseType::Light => crate::light::columns::CACHE,
};

for i in 0..NUM_COLUMNS {
if i == state_col {
memory_budget.insert(i, state_col_budget);
} else {
memory_budget.insert(i, other_col_budget);
let mut memory_budget = std::collections::HashMap::new();
match db_type {
DatabaseType::Full => {
let state_col_budget = (*cache_size as f64 * 0.9) as usize;
let other_col_budget = (cache_size - state_col_budget) / (NUM_COLUMNS as usize - 1);

for i in 0..NUM_COLUMNS {
if i == crate::columns::STATE {
memory_budget.insert(i, state_col_budget);
} else {
memory_budget.insert(i, other_col_budget);
}
}
log::trace!(
target: "db",
"Open RocksDB database at {}, state column budget: {} MiB, others({}) column cache: {} MiB",
path,
state_col_budget,
NUM_COLUMNS,
other_col_budget,
);
},
DatabaseType::Light => {
let col_budget = cache_size / (NUM_COLUMNS as usize);
for i in 0..NUM_COLUMNS {
memory_budget.insert(i, col_budget);
}
log::trace!(
target: "db",
"Open RocksDB light database at {}, column cache: {} MiB",
path,
col_budget,
);
}
}

db_config.memory_budget = memory_budget;

log::trace!(
target: "db",
"Open RocksDB database at {}, state column budget: {} MiB, others({}) column cache: {} MiB",
path,
state_col_budget,
NUM_COLUMNS,
other_col_budget,
);

let db = kvdb_rocksdb::Database::open(&db_config, &path)
.map_err(|err| sp_blockchain::Error::Backend(format!("{}", err)))?;
sp_database::as_database(db)
Expand Down