Hi Eric,

Thanks for the detailed review and explanation.

> Applications using SO_RCVBUF with tiny values can not expect kernel
> behavior to be stable,
> since rcvbuf management depends on metadata size, which can vary
> between kernels versions/options.

I agree with your reasoning. Applications locking SO_RCVBUF to small
values appear to be the primary trigger here, disabling auto-tuning
against modern metadata overhead.

> If  a kernel change is needed, I would rather enforce a sane sk_rcvbuf
> floor when the MSS is learnt
> at accept()/connect() time.
>
> ( TCP_SKB_MIN_TRUESIZE / SOCK_MIN_RCVBUF definitions )

Enforcing a safe sk_rcvbuf floor based on the learned MSS and
TCP_SKB_MIN_TRUESIZE at connect()/accept() time is a much cleaner
and safer solution to protect such applications from SWS stalls.

I will implement this approach in v4 and update the packetdrill test.

Thanks,
Ankit

Reply via email to