Thread (2 messages) 2 messages, 2 authors, 2017-03-11

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

From: Mulyadi Santosa <hidden>
Date: 2017-03-11 09:31:04

On Thursday, March 9, 2017, Shiyao Ma [off-list ref] 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 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help