kernel中socket buffer相关参数

Posted scaugsh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于kernel中socket buffer相关参数的主要内容,如果未能解决你的问题,请参考以下文章

kernel笔记:TCP参数

RHCA RH442实战系列之Linux buffer内存释放

Linux kernel buffer ring

Linux基础(第七周)

Linux-insmod/rmmod/lsmod驱动模块相关命令(10)

LINUX kernel笔记系列 :IO块参数 图