免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: fm971
打印 上一主题 下一主题

[算法] 超高性能网络编程, Asynchronous network I/O [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-07-18 09:28 |显示全部楼层
原帖由 zsniper 于 2008-7-17 17:09 发表
libevent可以解决超时问题,自己写的话,效率没有那么高,


当然我也写过一个用红黑树实现的超时,效率不高。。。。


我用的libevent-1.3的版本,他是用堆排序作的。可以参考一下。。


谢谢各位!
用开源库首先会增加函数堆栈. 像ACE虽然适跨合平台,但也会有代价.   libevent应该是个不错的选择.

论坛徽章:
0
12 [报告]
发表于 2008-07-18 10:38 |显示全部楼层
原帖由 zsniper 于 2008-7-18 09:32 发表



多线程适合阻塞的场合???谬论!!!!

看过HAHS,LF这些框架吗?再次建议你多看看POSA2

还需要说明的是,epoll本身就是以kqueue为蓝板开发的,所以在原理上kqueue和epoll一样,但不等同于IOCP,
...


多谢指正. 我的目标当然是要实现最大的网络I/O吞吐能力.

HAHS/LF/POSA2有它的适应场合. 但不是用在这种纯粹的网络I/O.
做以前的项目没看过mbuf,HAHS, 但我的实现思路是一样的.
有些人把事件通知模型封装成类似的异步模型. 我也不了解kqueue原来是事件. 不过像IOCP的效率也已经不错了.

论坛徽章:
0
13 [报告]
发表于 2008-07-18 10:45 |显示全部楼层
原帖由 cookis 于 2008-7-18 10:35 发表
就像QQ msn 都有心跳, 让服务器知道它们还活着.. 而不是网络中断, 或主机已经断电, 或程序崩溃, 这样才好管理这些client,
而不是一直持有它们所占的资源.

我昨晚看了一下livevent 的 active timeout 机制,
...........
我觉得这最好还是由应用层来控制, 为每一次会话作一个状态机, 当收到连接时, 生成一个会话对象, 由定时器来定时检测每个状态是否超时.
这些通信库提供的功能越简单越高效, 越稳定, 况且又不是所有人都有那样的需求. ...



想法不错.  在少量的线程里面, 甚至单线程, 要处理上万个socket, 你说这个定时器还能怎么实现?
我的理解也只有排序和查找.

论坛徽章:
0
14 [报告]
发表于 2008-07-18 15:59 |显示全部楼层
原帖由 cookis 于 2008-7-18 10:51 发表
能否讲一下 sk_buff 在什么环境下使用, 有什么效果?


Linux 的 TCP/IP协议栈是用sk_buff, 主要满足协议栈对缓存的要求, 比如各层之间的透明.
另一种被讨论的方法, 大概叫"分散/聚合缓存",  通过一次内存操作可以处理不同位置的内存分片.  会有优势的地方.

论坛徽章:
0
15 [报告]
发表于 2008-07-18 16:08 |显示全部楼层
原帖由 cookis 于 2008-7-18 11:33 发表
OK

event_loop run with thread1  

业务逻辑肯定运行在另外一个线程thread2. 如果thread2 想注册或先移除一个socket.
不能直接操作event_list吧.


一般来说应该有锁操作.  libevent怎么实现我也不知道.
做自己的协议栈一般不会用开源库, 比如说在嵌入式机的 IP/TCP/ 上再实现一层. 目前我也不用libevent.

论坛徽章:
0
16 [报告]
发表于 2008-07-21 09:26 |显示全部楼层
原帖由 unixpm 于 2008-7-18 17:13 发表
呵呵,我现在做的东西跟楼主做的几乎一样,也是交换数据的,说说自己的一些看法。

(1) I/O 模型的选择,

epoll就一定好吗?  epoll最有用的就是ET模式,适合于那种有大量连接,但是有数据连接有限的情况, ...


不错.  有两个点很值得关注,  contect-switches, IP 分片.

论坛徽章:
0
17 [报告]
发表于 2008-07-21 11:07 |显示全部楼层
原帖由 Kendiv 于 2008-7-21 10:27 发表


嗯,软件达到8Gbps?? 你用8块1G的网卡? 还是10块? 使用普通的小型机吗?(1U/2U)??? 那种分时复用的总线机制能达到8*1G=8Gbit?

还有,我所指的可靠性并不是指协议栈是否可靠,比如当设备在线时,如 ...



你说的没错. 硬件版是有很多优势.  但是要用NP/ASIC架构我不知道要多少成本!

他们的8Gbps也只是理论值.  如果用PC架构的高端服务器, IO能力还是不同的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP