提高 Linux 上 socket 性能[图]
日期:2007年6月10日 作者: 相关tags: 提高 Linux socket 性能- 最小化报文传输的延时。
- 最小化系统调用的负载。
- 为 Bandwidth Delay ProdUCt 调节 TCP 窗口。
- 动态优化 GNU/Linux TCP/IP 栈。
- [1] [2] [3] [4] [5] [6] 下一页
- U盘Linux系统制造总结【便携系统,不须要专业常识,合适新手】
- 三步提高电脑的运行速度简便方法
- Linux技巧:如何制作Linux下的USBKey
- 路由器和防火墙软件coyoteLinux配置指南
- 用VC++6.0的Sockets API实现一个聊天室程序
- Linux: 实现NAS的几种方案
- 用软件提高MP3音质的方法
- Linux内核调试器内幕
- LEM莱姆性能力增强教程绿色硬盘版
- 傻瓜系列:Linux省时技巧
- Linux新手必看:浅谈如何学习linux
- Linux网络安全及其优化
- Linux鸟哥私房菜-基础学习篇(第二版)
- Linux窗口程序设计—Qt4精彩实例分析
- VLC Media Player(VideoLAN) 0.8.6h for Linux
- 小芭比 Linux 4.0可在硬盘、U盘安装 免费中文精简版
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
提高 Linux 上 socket 性能
加速网络应用程序的 4 种方法
M. Tim Jones, 资深软件工程师, eMulex
Tim Jones 是一名嵌入式软件工程师,他是 GNU/Linux Application Programming、AI Application Programming 以及 BSD Sockets Programming from a Multilanguage Perspective 等书的作者。他的工程背景非常广泛,从同步宇宙飞船的内核开发到嵌入式架构设计,再到网络协议的开发。Tim 是 Emulex Corp. 的一名资深软件工程师。
2006 年 2 月 13 日
使用 Sockets API,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet 在全球范围内进行通信。与其他 API 一样,您可以通过一些方法使用 Sockets API,从而提高 Socket 的性能,或者限制 Socket 的性能。本文探索了 4 种使用 Sockets API 来获取应用程序的最大性能并对 GNU/Linux® 环境进行优化从而达到最好结果的方法。
在开发 socket 应用程序时,首要任务通常是确保可靠性并满足一些特定的需求。利用本文中给出的 4 个提示,您就可以从头开始为实现最佳性能来设计并开发 socket 程序。本文内容包括对于 Sockets API 的使用、两个可以提高性能的 socket 选项以及 GNU/Linux 优化。
为了能够开发性能卓越的应用程序,请遵循以下技巧:
技巧 1. 最小化报文传输的延时
在通过 TCP socket 进行通信时,数据都拆分成了数据块,这样它们就可以封装到给定连接的 TCP payload(指 TCP 数据包中的有效负荷)中了。TCP payload 的大小取决于几个因素(例如最大报文长度和路径),但是这些因素在连接发起时都是已知的。为了达到最好的性能,我们的目标是使用尽可能多的可用数据来填充每个报文。当没有足够的数据来填充 payload 时(也称为最大报文段长度(maximum segment size) 或 MSS),TCP 就会采用 Nagle 算法自动将一些小的缓冲区连接到一个报文段中。这样可以通过最小化所发送的报文的数量来提高应用程序的效率,并减轻整体的网络拥塞问题。
尽管 John Nagle 的算法可以通过将这些数据连接成更大的报文来最小化所发送的报文的数量,但是有时您可能希望只发送一些较小的报文。一个简单的例子是 telnet 程序,它让用户可以与远程系统进行交互,这通常都是通过一个 shell 来进行的。如果用户被要求用发送报文之前输入的字符来填充某个报文段,那么这种方法就绝对不能满足我们的需要。
另外一个例子是 HTTP 协议。通常,客户机浏览器会产生一个小请求(一条 HTTP 请求消息),然后 Web 服务器就会返回一个更大的响应(Web 页面)。
