当前位置: 首页 > 面试题库 >

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

西门智
2023-03-14
问题内容

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


问题答案:

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

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

  2. 连接的读写缓冲区

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

root@x:~# sysctl -A | grep net | grep mem

检查这些变量

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

net.core.wmem_max = 131071

net.core.rmem_max = 131071

net.core.wmem_default = 126976

net.core.rmem_default = 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_rmem='4096 4096 4096'

sysctl -w net.ipv4.tcp_wmem='4096 4096 4096'


 类似资料:
  • Linux内核的Virtual Routing and Forwarding (VRF) 是由路由表和一组网络设备组成的路由实例。 VRF安装 Ubuntu默认不包括vrf内核模块,需要额外安装: apt-get install linux-headers-4.10.0-14-generic linux-image-extra-4.10.0-14-generic reboot apt-get in

  • nf_conntrack nf_conntrack是Linux内核连接跟踪的模块,常用在iptables中,比如 -A INPUT -m state --state RELATED,ESTABLISHED -j RETURN -A INPUT -m state --state INVALID -j DROP 可以通过cat /proc/net/nf_conntrack来查看当前跟踪的连接信息,这

  • 问题内容: 具有100个属性的一个对象所消耗的存储空间是否与每个具有一个属性的100个对象所消耗的存储空间相同? 为一个对象分配多少内存? 添加属性时会使用多少额外空间? 问题答案: 指出,这不是一个容易回答的简单问题: JVM可以自由地以内部或大端或小端的任何方式存储数据,并具有一定的填充或开销,尽管基元必须表现得好像它们具有官方大小一样。 例如,JVM或本机编译器可能会决定将64位长块(如)存

  • 问题内容: 我一直在为OpenGL练习编写Minecraft副本(据我估计很多),但是在编写了基本的渲染API之后,我注意到真正的Minecraft 占用了 大量 内存或内存- 大约800MB!我完全可以理解为什么它必须记住所有的块,以及生成器的小怪和地形数据……我问自己:“此块与该块完全相同。它们可以在代码中吗? ” 并记得C ++有指针,所以我试图用我能想到的唯一方法在Java中做同样的事情,

  • 我在一个Redis实例中使用了几十个Redis DBs。每个DB由赋予的数字ID表示,例如: 我如何知道每个DB消耗多少内存,以及每个DB中最大的键是什么?

  • 为4.4 ti升级内核构建时,我收到一个网络接口错误。所有层都在morty分支中。该图像是核心图像极小值。 正在配置网络接口…ifup:未知地址类型“inet” 具有以下配置: 使用图层部分: 内核输出: 我有互联网使用非元ti层工作。任何提示建议都非常感谢。奥克