【问题标题】:iPhone Max Socket Buffer SizeiPhone 最大套接字缓冲区大小
【发布时间】:2010-12-17 00:27:23
【问题描述】:

我试图弄清楚 iOS 上最“优化”的套接字缓冲区大小是多少,当我使用 sysctl 查询 KIPC_MAXSOCKBUF 时,它返回一个 4Mb 缓冲区大小,这在我看来相当高......根据我的经验,套接字接收性能似乎更好当使用系统的“default_continuous_buffer_size”时(Unix 人在这里说话!)但是我无法在 iOS 上运行 sysctl -a 来获取该信息......而且它也不能通过 sysctl 的 C 接口使用(或者它是否有不同的名字?)。

有没有其他人测试过 iOS 上性能最高的 recv 套接字缓冲区大小是多少?

【问题讨论】:

  • 从未测试过性能,但我通常使用 1024KB(所以 1MB)。但我猜这个答案不是很有帮助..:P

标签: iphone sockets ios tcp


【解决方案1】:

我认为它是 1024 KB (1 MB),但我不太确定。使用 MAC OS 的 getsockopt(2),SO_SNDBUF 和 SO_RCVBUF 是分别调整正常缓冲区大小的选项。 对于大容量连接,缓冲区大小可能会增加,或者可能是 减少以限制传入数据的可能积压。系统 对这些值设置绝对限制。

更多信息请访问Mac OS X Manual Page For getsockopt(2)

【讨论】:

    【解决方案2】:

    我不确定是否有一个最佳尺寸。一般来说,无论平台如何,它似乎都可能因应用程序(您的代码)而有很大差异。使用中的硬件(各种蜂窝网络、WiFi,甚至在不常见的情况下甚至是以太网)似乎也很重要。

    另外,根据我刚刚在 macOS 上运行的一些实验,SO_RCVBUF 的值在读取后似乎发生了变化(从 ~400K 开始,我将其设置为 10 以测试我的代码具有较小的缓冲区大小,然后它跳回第一次读取后约 200K),因此系统可能正在做一些它认为正在动态优化的实证分析。 (iOS 上的行为当然可能与 macOS 不同。)

    是的,我回答老问题。怎么样?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 2012-04-16
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多