linux下网络编程:select异步通信的效率问题
来源:互联网 发布:第三方支付有哪些 知乎 编辑:程序博客网 时间:2024/05/18 19:22
linux下网络编程,服务端一般采用异步方式,提高响应速度。
一般的模型是:
1个Event Thread + 几个 (根据cpu核数而定)TaskThread。
Event Thread负责监听端口,接受连接,然后将连接socket分配给TaskThread处理。
我的程序中,Event Thread和TaskThread都使用select异步通信。
如上所说,这种方式可以提高响应速度,缺点是cpu在多个线程中切换,cpu占用率高。
为了在两者间做一个平衡,做了一个测试。
实验1
实验条件:
win7/rhel5.5,硬件相同。
实验过程:
A 50个连接由50个TaskThread处理,
B 50个连接由1个TaskThread处理。
实验预期:
A的cpu占用率远高于B.
实验结果:
windows(win7)上,符合预期。
linux(rhel5.5)上,完全相反。
实验结论:
猜想1.rhel5.5作为专业服务器,对线程调度几乎不花时间。
猜想2.rhel5.5上,select随着FDSET的增大,处理时间远高于线性增长。
实验2
实验条件:
同上
实验过程:(与实验1中A对照)
C 50个连接由2个TaskThread处理。
实验结果:
windows(win7)上,符合预期。
linux(rhel5.5)上,两者持平。
实验结论:
看来猜想2的可能大一些。
实验3
实验条件:
同上
实验过程:D 1个TaskThread处理1到50个连接,逐次增加。
记录10,20,30,40,50个连接时,select的处理时间,验证上面的猜想2。
土鳖
- linux下网络编程:select异步通信的效率问题
- linux下网络编程:select异步通信的效率问题(二)
- Linux下网络socket编程——实现服务器(select)与多个客户端通信
- linux网络编程:用C语言实现的聊天程序(同步通信)、(异步通信)
- ubuntu下的异步网络通信实例
- Linux 下网络编程中的select
- socket Linux 下网络编程中的select
- Linux 下网络编程中的select
- Linux 下网络编程中的select
- Linux 下网络编程中的select
- linux下非阻塞网络编程-select
- Linux网络编程一步一步学-异步通讯聊天程序select
- Linux网络编程用select实现异步通讯聊天程序
- linux网络编程异步IO模型之—select模型 .
- 深入Linux网络编程(二):异步阻塞IO----select
- Linux网络编程一步一步学-异步通讯聊天程序select
- Linux网络编程一步一步学-异步通讯聊天程序select
- Linux网络编程一步一步学-异步通讯聊天程序select
- POJ2488:A Knight's Journey
- IBM cognos 测试
- nyoj 3 多边形重心问题
- java程序控制系统中其他程序的方法
- iso-开发基础知识-11-迭代模式
- linux下网络编程:select异步通信的效率问题
- 新员工培训的十三条黄金法则【转载】
- 利用skyeye调试UART驱动
- 2013-8-14 PMP错题记录
- ASP无组件分页实现思路及代码
- 用户空间和内核空间传递数据:get_user;put_user;copy_to_user;copy_from_user
- 程序员如何成功的假装在很努力的工作【转载】
- 谷歌开源Gumbo:纯C语言实现的HTML5解析库
- nyoj 67 三角形面积