You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu系统中TCP窗口大小的合理配置方法及性能影响咨询

Ubuntu系统中TCP窗口大小的合理配置方法及性能影响咨询

嘿,我最近在折腾自己的DIY路由器迭代版——这套新系统带一对10G网口,用的是R68S U1跑Ubuntu 23.04。

最开始用iperf2和一台确定能跑满10G的设备做测速,结果只能跑到5G的速度。后来看到华硕的设备指南里建议用800k窗口大小来测试,于是我在路由器上执行了这个命令:

geek@router-t1:~$ iperf -s -w 800k

输出是这样的:

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size:  416 KByte (WARNING: requested  781 KByte)
------------------------------------------------------------
[  1] local 10.0.0.1 port 5001 connected with 10.0.0.2 port 52191
[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-60.0461 sec  35.0 GBytes  5.01 Gbits/sec

有意思的是,这里显示实际的TCP窗口比我请求的要小,正好对应华硕指南里提到的问题。而且这个情况只在Linux客户端上出现,Windows客户端完全没这毛病——这点挺奇怪的,不过可能是另一个问题了。

之后我添加了这些内核参数:

net.core.wmem_max=4194304
net.core.rmem_max=12582912
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 87380 4194304

改完之后再测速,性能直接翻倍了:

geek@router-t1:~$ iperf -s -w 800k -B 10.0.0.1

输出:

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 1.53 MByte (WARNING: requested  781 KByte)
------------------------------------------------------------
[  1] local 10.0.0.1 port 5001 connected with 10.0.0.2 port 57480
[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-60.0443 sec  69.2 GBytes  9.90 Gbits/sec

我知道这些参数是调整套接字接收缓冲区和新创建套接字的缓冲区大小的,但现在有两个疑问想请教大家:

  • 怎么计算出适合自己系统的TCP窗口/缓冲区大小?
  • 为什么调整这些参数会对10G网络的性能产生这么大的影响?

备注:内容来源于stack exchange,提问作者Journeyman Geek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 13:10:32