首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于Linux的Socket网络编程的性能优化
来源:本站整理  作者:佚名  2009-10-20 09:53:33




4.3 为Bandwidth Delay Product调节TCP窗口
    TCP的性能取决于几方面因素,最重要的是链接带宽(link bandwidth)(报文在网络上传输的速率)和往返时间(round-trip time)或RTT(发送报文与接收到另一端的响应之间的延时)。这两个值确定称为BDP(Bandwidth Delay Prod-uct)的内容。BDP给出一种简单的方法计算理论上最优的TCP Socket缓冲区大小(其中保存排队等待传输和等待应用程序接收的数据)。缓冲区太小,TCP窗口就不能完全打开,这会限制性能;缓冲区太大,则会浪费宝贵的内存资源;设置的缓冲区大小合适,就可完全利用可用带宽。
    BDP计算公式:
    BDP=link bandwidth×RTT
    若应用程序通过一个100MB/s的局域网通信,其RRT为500ms,则BDP为:50MB/sx0.050/ 8625M=625KB。Linux2.6默认的TCP窗口大小是110KB,这将连接的带宽限制为22M/S,计算方法如下:
    throughput=window_size/RTT
    110 KB/0.050=2.2 MB/s
    使用上面计算的窗口大小,得到带宽为12.5 MB/s,即:
    625 KB/0 050=12.5 MB/s
    差别很大,并且可以为Socket提供更大的吞吐量。可以根据自己的Socket计算最优的缓冲区大小。Socket提供几个Socket选项,其中两个可以用于修改Socket的发送和接收缓冲区的大小。使用SO_SNDBUF和SO_RCVBUF选项来调整发送和接收缓冲区的大小。

  
    在Linux 2.6内核中.发送缓冲区的大小由调用用户定义,而接收缓冲区会自动加倍。通过计算合理设置缓冲区的大小,Socket网络传输带宽的资源将得到充分利用,从而提高了传输性能。

5 结束语
    设计和实现一个基于Linux的Socket网络编程,通过在服务器端运行预先编译的可执行文件serv,和在客户端运行预先编译的可执行文件clt,服务器端和客户端建立通信连接。加入select()函数以后,服务器端可以允许多个客户端接入服务器端,解决了I/O多路复用问题,更加接近实际应用。利用TCP socket禁用Nagle算法实现了最小化报文传输的延时,提高了Socket的性能。在网络带宽非常珍贵的现实中。提出了为Bandwidth Delay Product调节TCP窗口,修改socket的发送和接收缓冲区的大小,完全利用可用的带宽。达到较好的网络传输效果。实际网络传输环境复杂多变,如何达到最理想的网络传输,还需进一步的分析和研究。

上一页  [1] [2] [3] [4]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:100,023.40000 毫秒