@@ -30,17 +30,8 @@ use tokio::task::JoinHandle;
3030use tokio_util:: codec:: FramedRead ;
3131use tracing:: { Instrument as _, Span } ;
3232
33- // PERF/FIXME: changing this parameter to 16 * 1024 greatly improves the throughput,
34- // but we need to wait until 2025 before making this change.
35- //
36- // iperf result for 4 * 1024:
37- // > 0.0000-10.0490 sec 23.0 GBytes 19.7 Gbits/sec
38- //
39- // iperf result for 16 * 1024:
40- // > 0.0000-10.0393 sec 30.6 GBytes 26.2 Gbits/sec
41- //
42- // This is an improvement of ~32.9%.
43- const MAXIMUM_PACKET_SIZE_IN_BYTES : u16 = 4 * 1024 ; // 4 kiB
33+ const DATA_PACKET_OVERHEAD : u16 = 8 ;
34+ const MAXIMUM_PACKET_SIZE_IN_BYTES : u16 = 8 * 1024 + DATA_PACKET_OVERHEAD ; // 8 kiB + packet overhead
4435const WINDOW_ADJUSTMENT_THRESHOLD : u32 = 4 * 1024 ; // 4 kiB
4536
4637pub type ApiResponseSender = oneshot:: Sender < JmuxApiResponse > ;
@@ -790,7 +781,11 @@ impl DataReaderTask {
790781 } = self ;
791782
792783 let codec = tokio_util:: codec:: BytesCodec :: new ( ) ;
793- let mut bytes_stream = FramedRead :: new ( reader, codec) ;
784+ let mut bytes_stream = FramedRead :: with_capacity (
785+ reader,
786+ codec,
787+ usize:: from ( MAXIMUM_PACKET_SIZE_IN_BYTES - DATA_PACKET_OVERHEAD ) ,
788+ ) ;
794789 let maximum_packet_size = usize:: from ( maximum_packet_size) ;
795790
796791 trace ! ( "Started forwarding" ) ;
0 commit comments