[转]: 高性能服务器软件开发

 

硬件设施和操作系统的开销比较。

 

我们将1,2结合起来进行比较:

 

选择下面一些基本的硬件平台:

典型的笔记本电脑,P4M平台,100M网卡,512M内存

典型的台式机,P4平台,100M网卡,512内存

典型的服务器,xeon平台,千兆网卡,1G内存

典型的AMD64位服务器,千兆网卡,1G内存

 

软件系统包括:

Windows系统:

Windows2000 Profession

Windows2000 Advance Server

 

自由的Unix类系统:

Linux 2.4内核

Linux 2.6内核

FreeBSD5.1内核

 

主要的性能评估包括:

 

影响服务器性能的操作系统的基本调用评估

l         分配/释放内存的开销

l         创建/中止线程/进程的开销

l         互斥锁的开销(上下文切换的开销)

l         内存映像文件的创建/读写开销

 

操作系统网络性能的基本评估

l         套接字的创建/释放开销

l         套接字的绑定开销

l         建立网络连接的开销

l         发送数据/接收数据的吞吐量

l         一次标准HTTP请求/响应的延时和开销。

 

初步的结果表明,硬件方面,Xeon系统显然超过了通常的笔记本和台式机,而AMD 64位系统在较低的主频下有非常好的性能表现(我们仍然使用32位软件进行测试)。而操作系统方面,所有的类Unix系统都全面超过Windows平台,而Linux2.6内核是各个平台中表现最好的。

 

网络IO模型的设计和评估:

 

基本概念,操作系统采用何种方式通知应用软件应该去某一个套接字上获取数据或者发送数据。

 

最简单的办法,采用轮询的机制循环检查套接字的状态,在很多时候,这种方式的效率反而最高。

轮询方式具体的应用范围:

 

其次,使用每个连接一个线程的方式,这种方式可行性决定于

操作系统可以使用线程的数量

操作系统线程创建和线程间切换的开销。(初步的测试表明,linux2.6内核每秒可以创建5000以上的线程)

 

两种基本的消息触发方式:

条件触发和边沿触发

常见的select就是条件触发。

 

Window平台:

包括常见的Select模型

event select模型

IO完成端口模型,实际上就是一种边沿触发的机制。

 

Linux平台

基本的select模型,最大的问题在于寻找哪一个socket上面发生的事件(socket的本质是文件句柄,所以数量巨大)

边沿触发: 

   2.4内核推荐的实时信号模型

   2.6内核推荐的epoll模型

 

FreeBSD

基本的select模型

边沿触发的kqueue模型

 

性能评估:

基本的测试表明,在同时并发连接数量,每个连接的延时和吞吐量上,Linux 2.6内核都是胜利者,其性能显著超过了2.4内核以及FreeBSD。所有的类Unix系统都将Windows系统远远抛在后面。在各种IO模型的比较下, linux2.6内核的epoll同样成为胜利者,而IO完成端口仍然是最后一名,显然,对易用性和图形性能的要求使得Windows并不适合作为一个服务器端的操作系统。

摘自:http://www.cnblogs.com/fangzi/archive/2006/07/16/452106.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值