diff options
author | Alex Auvolat <alex@adnab.me> | 2021-05-03 17:27:43 +0200 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2021-05-03 17:27:43 +0200 |
commit | 575726358c72772b7be00d0f8eaff76506118f7a (patch) | |
tree | a70969ceea0606c0634f5a88e111418219842bbe | |
parent | 339c61178948c6d504578344aadedd2cfb80e42b (diff) | |
download | garage-575726358c72772b7be00d0f8eaff76506118f7a.tar.gz garage-575726358c72772b7be00d0f8eaff76506118f7a.zip |
Tune Sled configuration
- Make sled cache size and flush interval configurable
- Set less agressive default values:
- cache size 128MB instead of 1GB
- Flush interval 2 seconds instead of .5 seconds
-rw-r--r-- | src/garage/server.rs | 7 | ||||
-rw-r--r-- | src/util/config.rs | 14 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/garage/server.rs b/src/garage/server.rs index 97a9bec2..3004d3d2 100644 --- a/src/garage/server.rs +++ b/src/garage/server.rs @@ -40,7 +40,12 @@ pub async fn run_server(config_file: PathBuf) -> Result<(), Error> { info!("Opening database..."); let mut db_path = config.metadata_dir.clone(); db_path.push("db"); - let db = sled::open(&db_path).expect("Unable to open sled DB"); + let db = sled::Config::default() + .path(&db_path) + .cache_capacity(config.sled_cache_capacity) + .flush_every_ms(Some(config.sled_flush_every_ms)) + .open() + .expect("Unable to open sled DB"); info!("Initialize RPC server..."); let mut rpc_server = RpcServer::new(config.rpc_bind_addr.clone(), config.rpc_tls.clone()); diff --git a/src/util/config.rs b/src/util/config.rs index bb70467b..093b3850 100644 --- a/src/util/config.rs +++ b/src/util/config.rs @@ -26,6 +26,14 @@ pub struct Config { /// Consul service name to use pub consul_service_name: Option<String>, + /// Sled cache size, in bytes + #[serde(default = "default_sled_cache_capacity")] + pub sled_cache_capacity: u64, + + /// Sled flush interval in milliseconds + #[serde(default = "default_sled_flush_every_ms")] + pub sled_flush_every_ms: u64, + /// Max number of concurrent RPC request #[serde(default = "default_max_concurrent_rpc_requests")] pub max_concurrent_rpc_requests: usize, @@ -86,6 +94,12 @@ pub struct WebConfig { pub index: String, } +fn default_sled_cache_capacity() -> u64 { + 128 * 1024 * 1024 +} +fn default_sled_flush_every_ms() -> u64 { + 2000 +} fn default_max_concurrent_rpc_requests() -> usize { 12 } |