From 800c07de5dfea9e27f5bd0d54b2ddc08971cab68 Mon Sep 17 00:00:00 2001 From: ospab Date: Tue, 26 May 2026 23:21:33 +0300 Subject: [PATCH] perf: increase backpressure limit to 16384 and reduce retransmit tick to 10ms for multi-gigabit speeds --- ostp-client/src/bridge.rs | 4 ++-- ostp-server/src/lib.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ostp-client/src/bridge.rs b/ostp-client/src/bridge.rs index 7acdc0a..e2b3ffd 100644 --- a/ostp-client/src/bridge.rs +++ b/ostp-client/src/bridge.rs @@ -134,7 +134,7 @@ impl Bridge { ) -> Result<()> { let mut metrics_tick = interval(Duration::from_millis(500)); let mut keepalive_tick = tokio::time::interval(Duration::from_secs(self.keepalive_interval_sec.max(1))); - let mut retransmit_tick = tokio::time::interval(Duration::from_millis(50)); + let mut retransmit_tick = tokio::time::interval(Duration::from_millis(10)); let init_msg = if self.mode == "tun" { "Bridge initialized (TUN mode)".to_string() } else { @@ -591,7 +591,7 @@ impl Bridge { } proxy_ev = proxy_rx.recv(), if self.running && sessions_opt.as_ref().map(|s| { // Backpressure: suspend proxy reads when ARQ window is saturated - s.iter().all(|ses| ses.machine.in_flight_count() < ses.machine.cwnd_packets().clamp(16, 256)) + s.iter().all(|ses| ses.machine.in_flight_count() < ses.machine.cwnd_packets().clamp(16, 16384)) }).unwrap_or(true) => { if let Some(ev) = proxy_ev { if let Some(sessions) = sessions_opt.as_mut() { diff --git a/ostp-server/src/lib.rs b/ostp-server/src/lib.rs index 9a1fd1a..9a3f69e 100644 --- a/ostp-server/src/lib.rs +++ b/ostp-server/src/lib.rs @@ -356,7 +356,7 @@ async fn run_server_loop( let socket = primary_socket; // Spawn a recv task for each socket, all feeding into the same channel - let (udp_tx, mut udp_rx) = mpsc::channel(10000); + let (udp_tx, mut udp_rx) = mpsc::channel(100000); for sock in &sockets { let sock_clone = sock.clone(); let tx = udp_tx.clone(); @@ -460,7 +460,7 @@ async fn run_server_loop( let _ = ui_event_tx.send(UiEvent::KeyCount(shared_keys.read().unwrap().len())); } - let mut retransmit_tick = interval(Duration::from_millis(50)); + let mut retransmit_tick = interval(Duration::from_millis(10)); let mut last_empty_app_log = Instant::now() - Duration::from_secs(10); let mut peer_last_seen: HashMap = HashMap::new(); let mut peer_available: HashMap = HashMap::new();