我想在 Linux TCP 接收缓冲区上运行模拟,以了解我的缓冲区必须有多大。
有没有软件可以进行这样的模拟?如果能够填满缓冲区来查看我的应用程序会发生什么,那就太方便了。
更新:看起来我们用的缓冲区太大了,因为缓冲区溢出了。我们的网络是 1Gbit,ping 时间只有 0.08ms。我们的缓冲区设置如下:
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.inotify.max_user_watches = 65536
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 1733248
net.core.wmem_default = 1733248
net.ipv4.tcp_rmem = 4096 1733248 16777216
net.ipv4.tcp_wmem = 4096 1733248 16777216
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
答案1
查看本文。它似乎很好地描述了优化过程,并且有示例代码(Java 和 C)来访问/更改大小。还有一个链接到 Linux 工具以确定最佳尺寸。
这篇其他文章展示一些可以使用 /proc/sys 文件系统访问的内容,这是获取实时信息的良好来源。它展示了如何使用命令行使用它。