epoll 模型测试

测试用例一: ET模式下,EPOLLOUT事件的触发

测试环境:

CentOS release 6.2 (Final)

事件注册:

epoll_ctl( epfd, connfd, EPOLLIN|EPOLLOUT|EPOLLET )

触发:

telnet 连接后,发送两次消息

测试结果:

epoll_wait wake up events number:1=========================================================================[4]
EPOLLIN
EPOLLOUT
recv msg:[kkkkkkkkk
]
ignore poll out event

all events process complate================================================================================[4]

epoll_wait wake up events number:1=========================================================================[5]
EPOLLIN
EPOLLOUT
recv msg:[k
]
ignore poll out event

all events process complate================================================================================[5]

epoll收到两次事件,每个事件均收到 EPOLLIN和EPOLLOUT,如果socket可写,则该事件会伴随其他事件出现。

epoll的工作模式应该是:当相关的对象(本例为sock)状态发生变化时(比如由可读触发的变化),epoll会报告该对象的所有的监控状态(由可读引发的状态变化,除了报告可读状态外,还会报告可写状态)

时间: 2024-10-01 02:43:02

epoll 模型测试的相关文章

epoll模型实例

一.epoll概述 epoll是linux下的一个系统调用,用来监听大量文件描述符并对其上的触发事件进行处理.它是select/poll的增强版本,也是linux下多路复用io最常用的接口.要理解epoll是什么,首先得清楚什么是多路复用io.用户进行io操作需要经过内核,而如果所请求的io目前不满足条件(如需要从标准输入读取数据,而用户还未输入),这个时候内核就会让应用程序陷入等待,即阻塞状态.个人理解,io复用技术就是通过特定接口,将这种阻塞进行了转移,转嫁到了如select/poll/ep

(OK) Linux epoll模型—socket epoll server client chat

http://www.cnblogs.com/venow/archive/2012/11/30/2790031.html http://blog.csdn.net/denkensk/article/details/41978015 定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率.因为它会复用文件描述符集合来传递结果而不是迫使开发者每次等待事

(OK) Linux epoll模型—socket epoll server client chat—pthread

http://www.cnblogs.com/venow/archive/2012/11/30/2790031.html http://blog.csdn.net/denkensk/article/details/41978015 定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率.因为它会复用文件描述符集合来传递结果而不是迫使开发者每次等待事

Linux epoll模型

定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率.因为它会复用文件描述符集合来传递结果而不是迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一个原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了.epoll除了提供select\poll那种IO事

基于EPOLL模型的局域网聊天室和Echo服务器

一.EPOLL的优点 在Linux中,select/poll/epoll是I/O多路复用的三种方式,epoll是Linux系统上独有的高效率I/O多路复用方式,区别于select/poll.先说select/poll的缺点,以体现epoll的优点. select: (1)可监听的socket受到限制,在32位的系统中,默认最大值为1024. (2)采用轮询方式,当要监听的sock数量很大时,效率低. (3)随着要监听socket数据的增加,要维护一个存放大量fd的数据结构,系统开销太大. pol

第九章 用多线程来读取epoll模型下的客户端数据

#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <assert.h> #include <stdio.h> #include <unistd.h> #include <errno.h> #include <string.h> #include

Apache select和Nginx epoll模型区别

部分内容摘自跟老男孩学Linux运维:Web集群实战(运维人员必备书籍) http://oldboy.blog.51cto.com/2561410/1752270 1.select 和epoll模型区别 1.1.网络IO模型概述 通常来说,网络IO可以抽象成用户态和内核态之间的数据交换.一次网络数据读取操作(read),可以拆分成两个步骤:1)网卡驱动等待数据准备好(内核态)2)将数据从内核空间拷贝到进程空间(用户态).根据这两个步骤处理方式不一样,我们通常把网络IO划分成阻塞IO和非阻塞IO.

LVS-DR模型测试实验

DR模型解决的realserver中的VIP与Dispatcher中的VIP在同一个网络的不同办法: 1.通过路由器上设置mac地址绑定,将VIP对应的mac地址写入路由器. 2.通过realserver的arptables定义规则. 3.通过操作系统的内核参数来解决. arp_ignore: 定义接收到arp请求时的响应级别,默认为0. 0.只要本地有响应的地址,就进行响应. 1.仅在请求的目标地址配置在请求的接口上时,进行响应. arp_announce: 定义将自己的地址向外通告时的通告级

I/O多路复用---epoll函数测试

参考文章来源: epoll使用详解(精髓) Epoll学习笔记 epoll是直到Linux2.6才出现了由内核直接支持的实现方法,那就是epoll,它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法. epoll可以同时支持水平触发和边缘触发(Edge Triggered,只告诉进程哪些文件描述符刚刚变为就绪状态,它只说一遍,如果我们没有采取行动,那么它将不会再次告知,这种方式称为边缘触发),理论上边缘触发的性能要更高一些,但是代码实现相当复杂. epol