Configurable state cache size and enforce exact state cache size (#2314)

* Allow configuring state cache size via cli

* Track used cache size

* Expose memory counter to informant

* Enforce max cache size constraint exactly

* Default to 64 MiB

Co-Authored-By: cmichi <mich@elmueller.net>

* Remove self as parameter
This commit is contained in:
Michael Müller
2019-04-23 19:47:11 +02:00
committed by Gavin Wood
parent 3f06fe32f3
commit c6d15e2cea
11 changed files with 131 additions and 12 deletions
+7
View File
@@ -76,6 +76,12 @@ pub fn start<C>(service: &Service<C>, exit: ::exit_future::Exit, handle: TaskExe
TransferRateFormat(bandwidth_upload),
);
let backend = (*client).backend();
let used_state_cache_size = match backend.used_state_cache_size(){
Some(size) => size,
None => 0,
};
// get cpu usage and memory usage of this process
let (cpu_usage, memory) = if sys.refresh_process(self_pid) {
let proc = sys.get_process(self_pid).expect("Above refresh_process succeeds, this should be Some(), qed");
@@ -99,6 +105,7 @@ pub fn start<C>(service: &Service<C>, exit: ::exit_future::Exit, handle: TaskExe
"finalized_hash" => ?info.chain.finalized_hash,
"bandwidth_download" => bandwidth_download,
"bandwidth_upload" => bandwidth_upload,
"used_state_cache_size" => used_state_cache_size,
);
} else {
warn!("Error getting best block information");
+1
View File
@@ -404,6 +404,7 @@ where
config.database_path =
db_path(&base_path, config.chain_spec.id()).to_string_lossy().into();
config.database_cache_size = cli.database_cache_size;
config.state_cache_size = cli.state_cache_size;
config.pruning = match cli.pruning {
Some(ref s) if s == "archive" => PruningMode::ArchiveAll,
None => PruningMode::default(),
+4
View File
@@ -313,6 +313,10 @@ pub struct RunCmd {
#[structopt(long = "db-cache", value_name = "MiB")]
pub database_cache_size: Option<u32>,
/// Specify the state cache size
#[structopt(long = "state-cache-size", value_name = "Bytes", default_value = "67108864")]
pub state_cache_size: usize,
/// Listen to all RPC interfaces (default is local)
#[structopt(long = "rpc-external")]
pub rpc_external: bool,