iPhone Max套接字缓冲区大小

9
我正在尝试确定iOS上最“优化”的套接字缓冲区大小,当我使用sysctl查询KIPC_MAXSOCKBUF时,它返回一个4MB的缓冲区大小,这对我来说似乎相当高...根据我的经验,当使用系统的“default_continuous_buffer_size”时,套接字接收性能似乎更好(我是Unix人!)。但是我无法在iOS上运行sysctl -a以获取该信息...并且它也不可通过sysctl的C接口获得(或者它有不同的名称吗?)。
是否还有其他人测试过iOS上最高效的接收套接字缓冲区大小?

从未测试过性能,但我通常使用1024KB(即1MB)。但我猜这个答案并不是很有帮助.. :P - stackr
2个回答

3
我认为它是1024 KB(1 MB),但我不是很确定。在MAC OS中使用getsockopt(2),SO_SNDBUF和SO_RCVBUF是分别调整正常缓冲区大小的选项。 缓冲区大小可以增加高容量连接,也可以减少以限制可能的传入数据积压。系统对这些值设置了绝对限制。 可在Mac OS X手册页面“getsockopt(2)”上找到更多信息。

0

我不确定是否有一个最佳的大小。基于一般原则,无论平台如何,它似乎很可能因应用程序(您的代码)而大不相同。此外,使用的硬件(各种类型的蜂窝网络、WiFi,甚至是不常见的以太网)也很重要。

另外,根据我刚在 macOS 上运行的一些实验,SO_RCVBUF 的值似乎会在读取后发生变化(开始时约为 400K,我将其设置为 10 以测试我的代码与小缓冲区大小,第一次读取后跳回约 200K),因此系统可能正在进行一些经验分析,认为这样可以优化处理速度。(iOS 上的行为当然可能与 macOS 不同。)

是的,我回答旧问题。怎么了?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接