Linux内核每个TCP/IP网络连接消耗多少内存?

Linux内核在每个TCP/IP网络连接上平均消耗多少内存(在内核地址空间中)

对于TCP连接,消耗的内存取决于

  1. sk_buff(linux内核使用的内部网络结构)的大小

  2. 连接的读写缓冲区

缓冲区的大小可以根据需要进行调整

[email protected]:~#sysctl-A | grep net | grep mem

检查这些变量

它们指定内核中所有网络连接的最大默认内存缓冲区使用量

net.core.wmem_max=131071
net.core.rmem_max=131071
net.core.wmem_默认值=126976
net.core.rmem_默认值=126976

它们指定特定于tcp连接的缓冲区内存使用情况

net.ipv4.tcp_mem=378528 504704 757056
net.ipv4.tcp_wmem=4096 16384 4194304
net.ipv4.tcp_rmem=4096 87380 4194304

指定的三个值是“最小默认最大”缓冲区大小。
因此,从linux开始,将为每个连接使用读写缓冲区的默认值。
随着连接数量的增加,这些缓冲区将减少[最多直到指定的最小值]
最大缓冲区值的情况也是如此

可以使用此sysctl-w KEY=KEY VALUE设置这些值

下面的命令确保每个连接的读写缓冲区都是4096

sysctl-w net.ipv4.tcp\u rmem='40964096'
sysctl-w net.ipv4.tcp_wmem='4096 4096'

发表评论