kernel中socket buffer相关参数

net.core.rmem_default:内核给单个socket分配的默认读buffer大小

net.core.rmem_max:所有socket的读buffer不能超过这个值(不清楚tcp和udp有没有分开)

net.core.wmem_default:内核给单个socket分配的默认写buffer大小

net.core.wmem_max:所有socket的写buffer不能超过这个值(不清楚tcp和udp有没有分开)

net.ipv4.tcp_mem:内核根据下面的数值对tcp socket内存进行限制
low:如果全部tcp socket分配的内存少于这个值,不做限制
pressure:如果全部tcp socket分配的内存超过这个值,内核将调整每个tcp socket的内存
high:全部tcp socket分配的内存不超过这个值,这个值覆盖其他限制

net.ipv4.tcp_rmem
min:当所有tcp socket使用内存紧张时,内核保证至少给每个tcp socket的读buffer分配这个值的内存大小
default:每个tcp socket默认读buffer缓冲区,会覆盖net.core.rmem_default
max:所有tcp socket读buffer总大小上限,不会覆盖net.core.rmem_max

net.ipv4.tcp_wmem
min:当所有tcp socket使用内存紧张时,内核保证至少给每个tcp socket的写buffer分配这个值的内存大小
default:每个tcp socket默认写buffer缓冲区,会覆盖net.core.wmem_default
max:所有tcp socket写buffer总大小上限,不会覆盖net.core.wmem_max

net.ipv4.udp_mem:内核根据下面的数值对udp socket内存进行限制
low:如果全部udp socket分配的内存少于这个值,不做限制
pressure:如果全部udp socket分配的内存超过这个值,内核将调整每个udp socket的内存
high:全部udp socket分配的内存不超过这个值,这个值覆盖其他限制

net.ipv4.udp_rmen_min:当所有udp socket使用内存紧张时,内核保证至少给每个udp socket的读buffer分配这个值的内存大小

net.ipv4.udp_wmen_min:当所有udp socket使用内存紧张时,内核保证至少给每个udp socket的写buffer分配这个值的内存大小

getsockopt()可以设置socket相关属性,其中有SO_RCVBUF和SO_SNDBUF属性设置每个socket读写buffer大小
对于udp:
socket属性 内核属性
SO_RCVBUF core.rmem_default
SO_SNDBUF core.wmem_default

对于tcp:
socket属性 内核属性
SO_RCVBUF tcp_rmem.default
SO_SNDBUF tcp_wmem.default

以上参考:
http://man7.org/linux/man-pages/man7/udp.7.html
http://man7.org/linux/man-pages/man7/tcp.7.html
http://man7.org/linux/man-pages/man7/socket.7.html

猜你喜欢

转载自www.cnblogs.com/scaugsh/p/10254483.html