转载 网络通信,其实就是在作内存(缓冲区)管理
2011-11-07 17:38
239 查看
最近看代码,感慨很多。作一个高性能的网络通信模块,除了要选择高性能的网络通信模型之外,同样重要的就是:你的内存(缓冲区)是如何管理的。
在网络通信模型方面,现在的技术都是比较成熟的了,在win下使用iocp,在linux下使用epoll。它们的使用方法,相对来说,还是比较有章可循的。
内存之于高性能,大致有以下两个方面需要特别注意:
1.尽可能地减少内存的动态申请和释放;
2.尽可能地减少内存数据的复制;
解决第1个问题,我们可以使用内存池;而解决第2个问题,就会牵涉到程序的架构设计了。
理想的情况是:
在数据接收方面,一个包,只要从网络模块接收下来后,直到它被上层逻辑使用完毕之后才会丢弃,而不应该在网络接收模块和上层逻辑模块之间增加任何的有关复制该包的行为和操作;
在数据发送方面,发送的时所用的缓冲区,不应该是即时申请的,而是从内存池中取的可用缓冲区,用完后再放回。
而我们看到,对于前者,也只有在架构方面作一些精巧布局才能达到目的。
在网络通信模型方面,现在的技术都是比较成熟的了,在win下使用iocp,在linux下使用epoll。它们的使用方法,相对来说,还是比较有章可循的。
内存之于高性能,大致有以下两个方面需要特别注意:
1.尽可能地减少内存的动态申请和释放;
2.尽可能地减少内存数据的复制;
解决第1个问题,我们可以使用内存池;而解决第2个问题,就会牵涉到程序的架构设计了。
理想的情况是:
在数据接收方面,一个包,只要从网络模块接收下来后,直到它被上层逻辑使用完毕之后才会丢弃,而不应该在网络接收模块和上层逻辑模块之间增加任何的有关复制该包的行为和操作;
在数据发送方面,发送的时所用的缓冲区,不应该是即时申请的,而是从内存池中取的可用缓冲区,用完后再放回。
而我们看到,对于前者,也只有在架构方面作一些精巧布局才能达到目的。
相关文章推荐
- 网络通信,其实就是在作内存(缓冲区)管理
- 转一点感慨:作网络通信,其实就是在作内存(缓冲区)管理
- 一点感慨:作网络通信,其实就是在作内存(缓冲区)管理
- 一点感慨:作网络通信,其实就是在作内存(缓冲区)管理
- 一点感慨:作网络通信,其实就是在作内存(缓冲区)管理
- 一点感慨:作网络通信,其实就是在作内存(缓冲区)管理
- 一点感慨:作网络通信,其实就是在作内存(缓冲区)管理
- 一点感慨:作网络通信,其实就是在作内存(缓冲区)管理
- (转载)《ns2仿真实验-多媒体和无线网络通信》NS2队列管理机制报错
- 河南通信管线资源管理系统--深圳市雅都软件股份有限公司(转载)
- 网络管理必备工具软件精解(Windows版)---转载及个人见解
- 版权声明:本文为博主原创文章,未经博主允许不得转载。 深度残差网络在2015的ILSVRC比赛中获得取得第一的成绩,ICLR2016上也是重点议题之一。 它主要思想很简单,就是在标准的前馈卷积网络
- boost::asio::ip::tcp实现网络通信的小例子(转载)
- 网络管理技巧进阶:如何管理实时通信软件
- 解读Python内存管理机制(转载)
- lxc的内存、网络、磁盘的监控管理(二)
- [转载]Linux系统对IO内存和IO端口的管理
- .NET Framework 自动内存管理机制深入剖析 (转载)
- 基于SNMP的通信网络性能管理模块设计与实现
- [转载] 信息系统项目管理师视频教程——02 数据通信与计算机网络