linux – 更高的rmem_max值导致更多的数据包丢失

前端之家收集整理的这篇文章主要介绍了linux – 更高的rmem_max值导致更多的数据包丢失前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
rmem_max Linux设置定义了接收UDP数据包的缓冲区的大小.
当流量变得太忙时,会开始丢包.

我制作了一个图表,显示了数据包丢失如何根据传入带宽增加.
(我使用IPerf在两个VM实例之间生成UDP流量).
不同的颜色适用于不同的rmem_max值:

如您所见,将rmem_max设置为26214400(深蓝色)会导致数据包丢失早于较小的值. Linux的默认值是131071(深绿色)看起来合理.

在这些情况下,为什么JBoss documentation建议将rmem_max设置为26214400?
是因为UDP流量预计高于350 MBytes /秒?我认为任何事情都不会超过1%的丢包率…

我错过了什么?

详细信息:我在两个节点上都使用了sysctl -w net.core.rmem_max = 131071(例如),并用作服务器iperf -s -u -P 0 -i 1 -p 5001 -f M,另一个用作客户端iperf -c 172.29.157.3 -u -P 1 -i 1 -p 5001 -f M -b 300M -t 5 -d -L 5001 -T 1.

解决方法

更多缓冲区并不一定意味着更快的速度.更多缓冲区意味着更多缓冲区.低于某个值,您会看到溢出,因为应用程序无法足够快地为接收的数据提供服务.这很糟糕,但是即使在偶尔出现流量高峰的情况下,应用程序仍有足够的缓冲区以合理的速率进行服务,那么其他任何东西都可能被浪费掉.

如果你变得很大,那么你就会给内核带来更大的负担来寻找和分配内存,具有讽刺意味的是,这可能导致数据包丢失.我的预感是,这可能就是你所看到的,但需要确认一些其他指标.

2.5M数字可能来自围绕设置TCP的rmem和wmem值的建议 – 其中窗口大小调整和缓冲区设置之间的关系在某些情况下会产生显着影响.也就是说,TCP!= UDP – 但有些人认为如果它有助于TCP它也会帮助UDP.你有正确的经验信息.如果我是你,我会坚持256K的价值,甚至可以称之为.

猜你在找的Linux相关文章