我试图弄清楚什么是iOS上最“优化”的套接字缓冲区大小,当我用sysctl查询KIPC_MAXSOCKBUF时,它返回一个4Mb的缓冲区大小,这在我看来相当高......根据我的经验,socket recv性能似乎更好当使用系统的“default_continuous_buffer_size”时(Unix人在这里说话!)但是我无法在iOS上运行sysctl -a来获取该信息......并且它也不能通过sysctl的C接口获得(或者它有一个不同的名字?)。
还有其他人测试了iOS上性能最高的recv套接字缓冲区大小吗?
答案 0 :(得分:3)
我认为它的1024 KB(1 MB),但我不太确定。使用MAC OS的getsockopt(2),SO_SNDBUF和SO_RCVBUF分别是调整正常缓冲区大小的选项。 对于高容量连接,可以增加缓冲区大小,或者可以是 减少以限制可能的输入数据积压。系统 对这些值设置绝对限制。
上找到更多信息答案 1 :(得分:0)
我不确定是否有一个最佳尺寸。一般而言,不管使用哪种平台,它似乎都可能因应用程序(您的代码)而有很大差异。使用的硬件(各种情况下的各种蜂窝,WiFi甚至以太网)似乎也很重要。
此外,根据我刚刚在macOS上运行的一些实验,读取后SO_RCVBUF的值似乎发生了变化(从〜400K开始,我将其设置为10以使用较小的缓冲区大小测试我的代码,然后跳回到首次读取后大约200K),因此系统可能正在进行一些据信正在进行优化的经验分析。 (iOS上的行为当然可能与macOS有所不同。)
是的,我回答了一些老问题。怎么了?