Epoll & Select性能比较测试


测试程序分客户端(client)及服务端(server).  服务端分别以select和epoll两种I/O模型实现.
1.连接建立速度测试
某个时刻连续向server发起大量连接请求,比较两种I/O模型下Server端的连接接收速度。在客户端记录下连接数完全建立后所花费的时间.
操作步骤:
I.启动服务端程序.
Selectserver命令:(./SelectServer 192.168.0.30 8000 1>/dev/null)
EpollServer命令:   (./EpollServer 192.168.0.30 8000 1>/dev/null)
参数1(192.168.0.30)为server绑定的IP, 参数2(8000)为server监听的端口号;
II.启动客户端程序
命令:./deadlink 192.168.0.30 8000 800
参数1(192.168.0.30)是server端的IP, 参数2(8000)是server监听的端口,参数3(800)是你想要建立连接的数量.等连接全部建立完毕后程序会自动打印出所花费的时间及成功建立的连接数.每个连接数量记录5组数据,去除一个最大及最小值后,取余下的3组数据的平均值作为最终结果.

2.数据传输性能测试
client端创建若干线程,每个线程与server建立一个连接。连接建立后向server发送取数据请求,然后读取server端返回的数据.如此反复循环。每个client请求server返回的数据字节数为1K(1024bytes)大小.当连接全部建立后,系统稳定下来,记录此时的服务程序对应的CPU占用率及内存使用率.每个连接数量记录下12组数据供分析使用.分析结果中将除去一个最大值及最小值,取余下的10组数据的平均值作为最终结果。
操作步骤:
I启动服务端
Selectserver命令:(./SelectServer 192.168.0.30 8000 1>/dev/null)
EpollServer命令:   (./EpollServer 192.168.0.30 8000 1>/dev/null)
参数1(192.168.0.30)为server绑定的IP, 参数2(8000)为server监听的端口号;
II.启动客户端
命令: ./activelink 192.168.0.30 8000  800
参数1(192.168.0.30)是server端的IP, 参数2(8000)是server监听的端口,参数3(800)是你想要建立的线程数(连接数).因为每个线程建立一个连接,所以此数量亦即建立的连接数。
III. netstat –la | grep “192.168.0.250” | wc –l 查看连接数量,等待建立完成.此处192.168.0.250为客户端机器IP地址。
IV.连接全部建立后等待5-6分钟,待系统稳定下来后top查看并记录12 组Server 程序所占CPU/内存使用率.
1.2 测试平台说明
Server机器配置
CPU(处理器) Intel(R) Pentium(R) 4 CPU 2.40GHz, L2 cache size: 512 KB
RAM(内存) 248384kb, 约为242M
OS(操作系统) Redhat Linux 9.0, kernel 2.6.16-20
NIC(网卡) Realtek Semiconductor RTL-8139/8139C/8139C+ (rev 10), work on negotiated 100baseTx-FD

client机器配置
CPU(处理器) Intel(R) Pentium(R) 4 CPU 2.0GHz, L2 cache size: 512 KB
RAM(内存) 222948kb, 约为218M
OS(操作系统) Redhat Linux 9.0, kernel 2.4.20-8
NIC(网卡) VIA Technologies VT6102 [Rhine-II] (rev 74)
1.3 测试工具说明


Server端程序:
源代码文件:server.cpp (请用UE打开) ,运行make生成SelectServer 及 EpollServer可执行文件.
 
客户端程序:
源代码文件:deadlink.cpp, activelink.cpp(请用UE打开),运行make生成deadlink(接收连接速度测试客户端),activelink(数据传输测试客户端)
  
2 测试结果
2.1 接收连接速度测试结果
表 2 1接收连接速度测试结果
连接数\IO模型 SelectServer(单位 秒s) EpollServer(单位 秒s)
100 0s 0s
200 0s 0s
300 6s 0s
400 14s 0s
500 24s 0s
600 36s 0.3s
700 48s 0s
800 59s 0s
900 72s 0s
1000 84s 0s

2.2 数据传输性能测试
表 2 2数据传输性能测试结果
连接数\IO模型 SelectServer [cpu%, mem%] EpollServer [cpu%, mem%]
100 [28.06,    0.3] [21.74, 0.3]
200 [43.66,    0.3] [40.50, 0.3]
300 [47.09,    0.3] [42.73, 0.3]
400 [59.04,    0.3] [44.55, 0.3]
500 [54.44,    0.3] [51.00, 0.3]
600 [63.38,    0.3] [50.76, 0.3]
700 [65.77,    0.3] [51.47, 0.3]
800 [70.52,    0.3] [52.80, 0.3]

posted on 2008-04-16 09:06 RedLight 阅读(1513) 评论(0)  编辑 收藏 引用 所属分类: 网络服务器开发


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

导航

统计

公告


Name: Galen
QQ: 88104725

常用链接

留言簿(3)

随笔分类

随笔档案

相册

My Friend

搜索

最新评论

阅读排行榜

评论排行榜