From 9bcd18e7af3c8ae814b06f96ba37c87db51c630c Mon Sep 17 00:00:00 2001 From: Igor Katson Date: Wed, 1 May 2024 23:01:06 +0100 Subject: [PATCH] It really helps to write to disk in a separate thread! --- crates/librqbit/src/storage/slow.rs | 3 ++- crates/librqbit/src/torrent_state/live/mod.rs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/librqbit/src/storage/slow.rs b/crates/librqbit/src/storage/slow.rs index 161f92c..72758ec 100644 --- a/crates/librqbit/src/storage/slow.rs +++ b/crates/librqbit/src/storage/slow.rs @@ -42,7 +42,8 @@ fn random_duration() -> Duration { // std::thread::sleep(sl) // let micros = 340f64 + sl * 200.; - let micros = micros.max(0.001) * 4.; + // 16 is max blocking threads + let micros = micros.max(0.001) * 4. * 16.; Duration::from_micros(micros as u64) } diff --git a/crates/librqbit/src/torrent_state/live/mod.rs b/crates/librqbit/src/torrent_state/live/mod.rs index 535d123..e465cbc 100644 --- a/crates/librqbit/src/torrent_state/live/mod.rs +++ b/crates/librqbit/src/torrent_state/live/mod.rs @@ -1502,7 +1502,8 @@ impl PeerHandler { let _ = tx.send(WriterRequest::Disconnect(Err(e))); } }; - disk_work_queue_tx.send(Box::new(work))?; + tokio::runtime::Handle::current().spawn_blocking(work); + // disk_work_queue_tx.send(Box::new(work))?; } else { self.state .meta