@@ -30,17 +30,8 @@ use tokio::task::JoinHandle;
30
30
use tokio_util:: codec:: FramedRead ;
31
31
use tracing:: { Instrument as _, Span } ;
32
32
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
44
35
const WINDOW_ADJUSTMENT_THRESHOLD : u32 = 4 * 1024 ; // 4 kiB
45
36
46
37
pub type ApiResponseSender = oneshot:: Sender < JmuxApiResponse > ;
@@ -790,7 +781,11 @@ impl DataReaderTask {
790
781
} = self ;
791
782
792
783
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
+ ) ;
794
789
let maximum_packet_size = usize:: from ( maximum_packet_size) ;
795
790
796
791
trace ! ( "Started forwarding" ) ;
0 commit comments