posts - 3,  comments - 0,  trackbacks - 0

有多种基于事件机制的系统调用。
epoll
select
kqueue

libevent可以处理三种事件:计时器,信号和IO事件。
计时器的实现采用的是RBTree,可以实现对计时器高效的查询,排序和删除。 到1.4版本,实现的数据结构已经改为Heap,可以提高效率。(具体的测试统计数据呢?)

epoll的操作只涉及4个函数:epoll_create, epoll_ctl, close和epoll_wait。
是Linux设备:/dev/epoll

可以去了解下游戏服务器的性能权衡
使用select或poll,当在线人数上升时,性能会以2-3次方的指数下降?因此每台服务器都有一个明显的上限? // 这些数据可以收集一些的。
网络模型, Socket连接
epoll有两种工作模式:分别是LT(Level Triggeredd)和ET(Edge Triggered)。 LT模式下同时支持 阻塞和非阻塞 Socket,ET为高速模式,只支持非阻塞 Socket。
采用select模型,一个进程最多可打开的Socket数目是1024,当然可以通过修改内核代码加以扩大,但这样做麻烦,而且不具有可行性。
epoll是变相的 nio实现,采用了回调机制,只处理激活状态的Socket,因为只有激活的Socket才可以通过fd调用操作。
select,处理Socket连接时,则需要遍历整个Socket列表(不管是以数组的形式存放,还是以链表的形式存放)。 但是在LAN内,当几乎所有连接都处于激活状态的情绪下,select的性能甚至比epoll还要好。但是在WAN中,即只有少数 Socket连接处于激活状态的情绪下, epoll具有明显优势。

memcached使用了libevent库,但是使用的是里面的哪种 事件处理机制呢?

posted on 2009-07-28 23:57 thinke365 阅读(325) 评论(0)  编辑 收藏 引用

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