优化STB&TV的网络带宽
2016-02-19 09:33
751 查看
在STB和TV竞争对手里面,常遇到我们平台网络性能不如海思平台的问题。特别表现在播放网络视频的时候,人家播得很顺畅,可是我们平台会卡卡顿顿。这里主要涉及到带宽竞争的问题。
要争取足够的带宽,就要从两个方面入手:1.服务器单位时间发送更多的数据过来;2.STB&TV平台能更快的处理数据
对于第一个方面,具体到一个tcp连接,就是服务器一次发送足够多的数据出来。而一次应该发送多少数据是由tcp发送窗口决定,而发送窗口又是由网络状况和对端设备的tcp接收窗口共同决定。网络状况我们没办法决定,只能从对端设备的tcp接收窗口入手,这里的对端设备是针对服务器而言,具体来讲就是STB&TV平台了。
在linux&Android系统中,tcp接收窗口由/proc/sys/net/ipv4/tcp_rmem里面的数值决定,数值越大,表示接收窗口越大,服务器就能够一次发送更多的数据过来。
但是,数值也不适过大,因为这样会导致网络拥塞,反而导致带宽降低。
下面两个图分别是扩大接收窗口前和扩大后的对比图,其中ip地址192.168.7.137为MS平台,192.168.7.135为海思平台
优化前MS接收窗口
对比机接收窗口
可以看得出,对比机接收窗口远远大于我们平台
优化前带宽对比图
红线为MS平台,绿线为对比机平台
可以看出来差别不算太大,只是我们平台整体上数据没对比机连续,峰值线没对比机高
优化后MS接收窗口
此时MS接收窗口已经大于对比机接收窗口
优化后带宽对比
红线为MS平台,绿线为对比机平台
这里可以看到经过优化后MS平台带宽是高于对比机的
下面要讲的是带宽过大带来的不利影响
优化前平均带宽:
优化后平均带宽
可以看到优化后总平均带宽(MS+对比机)反而减小了,这就是因为窗口太大,导致网络阻塞,反而使总带宽下降了
前面总结的是第一个方面,就是通过加大tcp接收窗口让服务器端一次发送更多数据。另外还有一种方法让服务器发送更多数据,就是开启多个线程向服务器建立多个tcp连接拉数据最后一种方法就是上层调用read或者recv函数的时候,请求的size可以稍微大一些,这样一方面可以更好的发挥加大tcp接收窗口带来的优势,另一方面可以减少系统调用,减小耗时。
第二个方面,就是提高STB&TV的响应速度
在硬件配置确定的情况下,可以在程序中创建socket后使用setsockopt设置TCP_NODELAY加快响应
要争取足够的带宽,就要从两个方面入手:1.服务器单位时间发送更多的数据过来;2.STB&TV平台能更快的处理数据
对于第一个方面,具体到一个tcp连接,就是服务器一次发送足够多的数据出来。而一次应该发送多少数据是由tcp发送窗口决定,而发送窗口又是由网络状况和对端设备的tcp接收窗口共同决定。网络状况我们没办法决定,只能从对端设备的tcp接收窗口入手,这里的对端设备是针对服务器而言,具体来讲就是STB&TV平台了。
在linux&Android系统中,tcp接收窗口由/proc/sys/net/ipv4/tcp_rmem里面的数值决定,数值越大,表示接收窗口越大,服务器就能够一次发送更多的数据过来。
但是,数值也不适过大,因为这样会导致网络拥塞,反而导致带宽降低。
下面两个图分别是扩大接收窗口前和扩大后的对比图,其中ip地址192.168.7.137为MS平台,192.168.7.135为海思平台
优化前MS接收窗口
对比机接收窗口
可以看得出,对比机接收窗口远远大于我们平台
优化前带宽对比图
红线为MS平台,绿线为对比机平台
可以看出来差别不算太大,只是我们平台整体上数据没对比机连续,峰值线没对比机高
优化后MS接收窗口
此时MS接收窗口已经大于对比机接收窗口
优化后带宽对比
红线为MS平台,绿线为对比机平台
这里可以看到经过优化后MS平台带宽是高于对比机的
下面要讲的是带宽过大带来的不利影响
优化前平均带宽:
优化后平均带宽
可以看到优化后总平均带宽(MS+对比机)反而减小了,这就是因为窗口太大,导致网络阻塞,反而使总带宽下降了
前面总结的是第一个方面,就是通过加大tcp接收窗口让服务器端一次发送更多数据。另外还有一种方法让服务器发送更多数据,就是开启多个线程向服务器建立多个tcp连接拉数据最后一种方法就是上层调用read或者recv函数的时候,请求的size可以稍微大一些,这样一方面可以更好的发挥加大tcp接收窗口带来的优势,另一方面可以减少系统调用,减小耗时。
第二个方面,就是提高STB&TV的响应速度
在硬件配置确定的情况下,可以在程序中创建socket后使用setsockopt设置TCP_NODELAY加快响应
相关文章推荐
- TCP
- http与socket区别
- AFNetworking VS ASIHTTPRequest
- ASIHTTPRequest
- 一次完整的HTTP事务分析
- http请求操作git项目分支权限
- 网络安全
- http://blog.sina.com.cn/s/blog_5da93c8f0102w86x.html
- 优化网络和应用性能必知的三个经典响应时间点
- 【转帖】对通用输入输出GPIO的深入理解http://www.9mcu.com/9mcubbs/forum.php?mod=viewthread&tid=954521(出处: 大连创客空间)
- Http协议简单解析(1)
- 同步异步1:有线网络中的同步异步
- 网络编程第一篇之Select模式
- 【网络】多线程--NSThread、GCD、NSOperationQueue
- 开源流媒体服务器EasyDarwin支持epoll网络模型,大大提升流媒体服务器网络并发性能
- 开源流媒体服务器EasyDarwin支持epoll网络模型,大大提升流媒体服务器网络并发性能
- 【Tomcat】HTTP错误代码详细介绍
- iOS 网络请求封装
- 使用Flat Network Provider搭建扁平网络教程
- URL,URLConnection,HttpURLConnection的简单应用