GSO and GRO
Generic Segmentation Offload (GSO) and Generic Receive Offload (GRO) are network stack features that can improve the efficiency of transmitting and receiving packets. GSO/GRO are enabled by default in s2n-quic
on operating systems that have good support for these features (namely Linux variants). s2n-quic
will also automatically disable these features if the operating system emits a socket error indicating they are not supported.
Some operating systems may silently fail when using GSO/GRO, leading to performance degradation. In these cases, s2n-quic
will not automatically disable GSO/GRO. You can manually disable GSO/GRO on the IO provider to evaluate if that has a positive impact on performance:
#![allow(unused)]
fn main() {
let io = s2n_quic::provider::io::Default::builder()
.with_gso(false)? // disable GSO
.with_gro(false)? // disable GRO
.build()?;
let mut server = Server::builder()
.with_io(io)?
.start()?;
}