why `send(2)' blocks even though I've turned up the related sock settings?

Mulyadi Santosa mulyadi.santosa at gmail.com
Sat Mar 11 04:31:04 EST 2017


On Thursday, March 9, 2017, Shiyao Ma <i at introo.me> wrote:

> Hi,
>
> The related settings are,
>
> sudo sysctl -w net.core.rmem_max=2147483647
> sudo sysctl -w net.core.wmem_max=2147483647
>
> sudo sysctl -w net.ipv4.tcp_rmem="10240 8738000 2147483647"
> sudo sysctl -w net.ipv4.tcp_wmem="10240 8738000 2147483647"
>
> sudo sysctl -w net.ipv4.tcp_limit_output_bytes=2147483647
>
> They are insanely big.
>
>
How big are the data you send during single call of send() ?

Also, what parameters do you use in send () ?



> However, when executing `send' for a large buffer, it still blocks.
>
> I thought L4 (tcp) will accept that large buffer as long as it can copy
> those buffer into kernel.
> Turns out not.
>
> What could be the possible reason?
> Does the TCP check the `cwnd' setting or so even in the step of copying
> buffer from userspace to kernel?  I didn't find the related code, though.
>
>
> Regards.
>
>
>

-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20170311/56a6806a/attachment.html 


More information about the Kernelnewbies mailing list