如何在 Mac OSX 上设置网络接口的传输队列长度?在 Linux 上,命令如下
ifconfig en0 txqueuelen 5
但 OSX 无法将 txqueuelen 识别为有效选项。BSD 在哪里管理此类配置?
答案1
现在可以检查系统默认值(发送和接收队列):
sysctl net.link.generic.system.sndq_maxlen
sysctl net.link.generic.system.rcvq_maxlen
并设置默认传输队列(当前默认为 128)例如:
sysctl -w net.link.generic.system.sndq_maxlen=150
和默认接收队列(当前默认为 256)例如:
sysctl -w net.link.generic.system.rcvq_maxlen=260
目前尚不清楚是否可以设置每个接口的队列长度。输出队列长度的默认值在 xnu 内核中设置:bsd/net/if.h:#define IFQ_MAXLEN 128
在较旧的内核中,您曾经能够在 OSX 上设置最大输入队列长度,如下所示(例如,设置为 100 个数据包) - 这对于调整传入数据包流的性能很有用 - 这是数据包从传入接口出来时放入的内部队列:
sysctl -w net.inet.ip.intr_queue_maxlen=100
答案2
通常,'sysctl' 用于调整 TCP 参数。我查看了
sysctl -a
虽然我没有看到任何可能完全匹配的内容,但还是有一些可能的参数。我必须指出,BSD 和 Linux 的内部结构有很大不同,可能没有类似的 txqueuelen 调整。(即:该范例可能不适用于 MacOS 的网络实现)