首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 第二书店 程序员
您的位置:软件2.0->高性能网络编程: 加快客户机和服务器的处理速度

高性能网络编程: 加快客户机和服务器的处理速度2008-05-08 来自:xuejinyoulan  [收藏到我的网摘]

来源:developerworks中国
  本文为那些希望增强其网络吞吐量的 UNIX® 编程人员提供了诸多技巧。学习如何使用 mmap、收集分散的 I/O 和其他方法加速客户机和服务器的处理速度。
  引言

  本系列的第 1 部分(请参阅参考资料)重点介绍了利用诸如非阻塞 I/O 之类的高级编程技术最大限度提高网络利用率方面的一些小窍门。这篇文章还介绍了您可以使用的一些其他小窍门。

  目前,大多使用硬盘进行文件存储。作为机械设备,在特定情形下,硬盘永远也达不到主要存储(如 RAM 或网络)所具有的速度。推荐使用 SCSI 或 SATA,因为与较旧的 IDE 磁盘相比,它在吞吐量上提供了快速改进。

  还应确保您的磁盘使用 DMA 进行传输。

  作为编程人员,可以确定减少磁盘延迟的方法。最相关的主题包括:最小化系统调用上下文切换开销和内存副本开销 (memcpy(2))。对于 TCP 发送和接收缓冲区来说,使用确定的值对减少系统调用开销非常有用。在大多数 UNIX® 代码中,一般使用值 8192 或 0x8000。

  当然,您还需要:

  通过将开销较大的代码移出循环来减少客户机或服务器 CPU 的负载。
从不使用 sleep(2) 或同步元素。
不考虑使用线程来提高网络性能。

  多用途的 mmap(2) 方法

  您知道内存映射的 I/O 和 I/O 映射的 I/O。通常在设备驱动程序中以及与外围设备进行通讯时使用此方法。您可以使用 UNIX 系统上的 mmap(2) 系统调用来映射主内存,使其直接指向辅助存储(硬盘)上的文件。

  mmap(2) 是一种用途很广的系统调用(如 select(2)),但是,这里关心的重点是增强磁盘 I/O 的性能和减少内存副本开销。借助于 mmap(2) 将文件内容读入主内存,而不使用 read(2)/fread(2) 系统调用可以同时实现这两种要求。

推荐人评论

本文为那些希望增强其网络吞吐量的 UNIX® 编程人员提供了诸多技巧。学习如何使用 mmap、收集分散的 I/O 和其他方法加速客户机和服务器的处理速度。

用户评论

正在载入评论列表...

是谁推荐了此篇文章

专家头像张翠萍
个人blog发送信息
张翠萍推荐的其他文章

热点新闻

热点评论

    视频访谈

    精彩专题

    
      网站简介广告服务网站地图帮助联系方式诚聘英才English问题报告
    北京世纪乐知数码科技有限公司  版权所有  京 ICP 证 020026 号
    北京创新乐知广告有限公司 提供技术支持
    Copyright © 2000-2006, CSDN.NET, All Rights Reserved