我们所做的net.core.rmem_default设置是针对每个套接字还是Linux中打开的所有套接字?我可以为此参数配置的最大值是多少?有上限吗?据我所知,这取决于RAM,但我要说我有大到60 GB的可用内存。
答案 0 :(得分:1)
net.core.rmem_default
是每个套接字的传入内核套接字缓冲区的大小。
<强> SO_RCVBUF 强>
以字节为单位设置或获取最大套接字接收缓冲区。当使用
setsockopt
(2)设置时,内核将此值加倍(以便为簿记开销留出空间),并且getsockopt
(2)返回此加倍值。默认值由/proc/sys/net/core/rmem_default
文件设置,最大允许值由/proc/sys/net/core/rmem_max
文件设置。此选项的最小(加倍)值为256.
最佳传入套接字缓冲区大小为the bandwidth-delay product。
为了最小化recv
系统调用,用户空间套接字缓冲区大小应不小于内核缓冲区的大小。使用非阻塞I / O时,必须发出多个recv
系统调用来读取内核套接字缓冲区可能会导致其他套接字无法使用。