如何在 MAC OS X 中获得最大 TCP 接收/发送窗口?
Posted
技术标签:
【中文标题】如何在 MAC OS X 中获得最大 TCP 接收/发送窗口?【英文标题】:How to get maximum TCP Receive/Send window in MAC OS X? 【发布时间】:2011-05-29 08:54:38 【问题描述】:如何在 MAC OS X 中获取最大 TCP 接收/发送窗口?
Linux 中有两个 ctl。 /proc/sys/net/core/rmem_max - 最大 TCP 接收窗口 (NET_CORE_RMEM_MAX) /proc/sys/net/core/wmem_max - 最大 TCP 发送窗口 (NET_CORE_WMEM_MAX)
但我找不到如何在 mac os 中获取这些参数。
有人知道吗?
我在 MAC OS X 中找到了以下 ctls: net.inet.tcp.recvspace、net.inet.tcp.sendspace、kern.ipc.maxsockbuf
好像recvspace+sendspace 不能大于maxsockbuf。 我在这里读过它: http://www.macgeekery.com/tips/configuration/mac_os_x_network_tuning_guide_revisited
【问题讨论】:
【参考方案1】:我不能 100% 确定这些是否正确,但请尝试 sysctl -n net.inet.tcp.recvspace
和 sysctl -n net.inet.tcp.sendspace
。您可以使用sysctl -w
设置它们(请参阅man sysctl
)。
【讨论】:
这些 ctls (net.inet.tcp.recvspace, net.inet.tcp.sendspace) 为我提供了当前用于发送和接收的 tcp 缓冲区大小。我需要知道 recvspace 和 sendspace 的最大值。唯一的想法是:kern.ipc.maxsockbuf IPC 是 InterProcessCommunication 的简写,所以我怀疑是这个。 其实socket api是ipc工具之一。我不确定kern.ipc.maxsockbuf。我在上面提到的文章中读过它。我应该进行一些测试。【参考方案2】:正如 OP 所说:recvspace+sendspace < maxsockbuf
maxsockbuf
受限于kern.ipc.nmbclusters
、nmbclusters*2KB/16=maxsockbuf
sysctl -a | egrep nmbcl\|maxsockb
kern.ipc.maxsockbuf: 8388608
kern.ipc.nmbclusters: 65536
要增加maxsockbuf
,告诉系统使用超过
默认mbufclusters
通过 ncl 引导参数:(您需要在编辑引导参数之前禁用 SIP)
nvram boot-args="ncl=131072"
shutdown -r now
引用here
【讨论】:
以上是关于如何在 MAC OS X 中获得最大 TCP 接收/发送窗口?的主要内容,如果未能解决你的问题,请参考以下文章