首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

高性能网络服务程序开发,该如何处理

2012-10-26 
高性能网络服务程序开发这个程序用于输出以下两种数据:1、磁盘文件输出。文件大小为几K到几百K,从磁盘读取后

高性能网络服务程序开发
这个程序用于输出以下两种数据:
1、磁盘文件输出。文件大小为几K到几百K,从磁盘读取后输出。最好是运行在内核模式。
2、缓存的数据,每个输出单位大小为几十字节到几十K,一共占用10GB内存。这些数据来源于数据库,而数据库运行在用户空间。
重要:小于512字节的数据输出占80%以上。

对于性能,假设每次输出大小为512字节,希望在2个CPU一共16个核心的系统上每秒能输出10万次,网卡流量100-500M。
应该作为内核模块还是用户空间程序,应该使用epoll实现还是基于底层协议实现,暂时没有头绪。现在想到的问题有这些:

1、对于输出磁盘文件,程序最好运行于内核空间,减少内核/用户空间复制和转换成本。
2、缓存的数据,需要考虑数据生成和数据输出。数据生成要从用户空间的数据库读取。
3、这个程序能不能作为内核模块实现。其中,程序需要使用10GB内存用于缓存数据。要读取用户空间的数据库。
4、如果在用户空间实现,要达到每秒10万次输出,会不会有困难。
5、如果分别开发一个内核模块和一个用户空间程序配合实现相关功能,这是解决了问题还是带来了问题。
6、主要性能瓶颈在哪里。

[解决办法]
你要是真的像把这东西做出来,建议你用点成熟的架构来做吧..
有钱的话,搞个网络处理器来做,里面的内核模块专门应对包的处理.

热点排行