拔高 Linux 上 socket 性能
提高 Linux 上 socket 性能?表 1?给出了几个可调节的参数,它们可以帮助您提高 Linux TCP/IP 栈的性能。回页
提高 Linux 上 socket 性能
?
表 1?给出了几个可调节的参数,它们可以帮助您提高 Linux TCP/IP 栈的性能。
回页首
结束语
尝试使用本文中介绍的技巧和技术来提高 socket 应用程序的性能,包括通过禁用 Nagle 算法来减少传输延时,通过设置缓冲区的大小来提高 socket 带宽的利用,通过最小化系统调用的个数来降低系统调用的负载,以及使用可调节的内核参数来优化 Linux 的 TCP/IP 栈。
在进行优化时还需要考虑应用程序的特性。例如,您的应用程序是基于 LAN 的还是会通过 Internet 进行通信?如果您的应用程序仅仅会在 LAN 内部进行操作,那么增大 socket 缓冲区的大小可能不会带来太大的改进,不过启用巨帧却一定会极大地改进性能!
最后,还要使用?tcpdump?或?Ethereal?来检查优化之后的结果。在报文级看到的变化可以帮助展示使用这些技术进行优化之后所取得的成功效果。
?
参考资料
学习
- 您可以参阅本文在 developerWorks 全球站点上的?英文原文。
- 两部分的系列文章 “Linux Socket 编程”(developerWorks,2003 年 10 月和 2004 年 1 月)可以帮助您编写 socket 应用程序。?
- 请参阅 Pittsburgh Supercomputing Center 有关?TCP 友好的拥塞控制算法?的其他文章。?
- 增大 MTU 可以极大地影响性能。请参阅更多有关?巨帧?及其优点的内容。?
- 请参阅?ICSI Center for Internet Research?有关?选择性应答?的文章。?
- 查看?TCP Westwood 主页,了解更多有关 TCP Westwood 算法的详细内容。?
- 研究 North Carolina State University 的?Binary Increase Congestion TCP。?
- 请阅读本文作者编写的书?BSD Sockets Programming from a Multilanguage Perspective(Charles River Media,2003 年 9 月),其中介绍了使用 6 种不同的语言来编写 socket 程序的技术。?
- 在?developerWorks Linux 专区?中可以找到为 Linux 开发人员准备的更多资源。?
- 跟踪?developerWorks 技术事件和 Webcasts?的最新进展。?
获得产品和技术
- 您可以将?netlog 库?链接到一个应用程序,以便为性能分析提供方便。?
- Ethereal?是一个图形化的网络协议分析器,其中包括了用于协议分析的插件架构。?
- 请阅读?National Laboratory for Applied Network Research?上更多有关?Iperf 工具?的内容。?
- 在您的下一个开发项目中采用?IBM 试用软件,这可以从 developerWorks 上直接下载。
讨论
- 通过参与?developerWorks blogs?加入 developerWorks 社区。