标签: epoll

epoll,poll,threadpool有什么区别?

可能有人解释的区别是什么之间epoll,poll和线程池?

  • 有哪些优点/缺点?
  • 有关框架的任何建议吗?
  • 有关简单/基本教程的任何建议吗?
  • 看来,epollpoll有特定的Linux ...是否有适用于Windows的等量替代?

asynchronous epoll io-completion-ports

74
推荐指数
1
解决办法
2万
查看次数

选择vs民意调查与epoll

我正在设计一个新服务器,它需要支持数千个UDP连接(大约100,000个会话).有哪些输入或建议可供使用?

sockets linux epoll posix-select

64
推荐指数
3
解决办法
5万
查看次数

epoll边缘触发选项的目的是什么?

来自epoll的手册页:

epoll is a variant of poll(2) that can be used either as an edge-triggered
or a level-triggered interface
Run Code Online (Sandbox Code Playgroud)

什么时候会使用边缘触发选项?手册页给出了一个使用它的示例,但我不明白为什么在示例中有必要.

c sockets epoll

56
推荐指数
2
解决办法
2万
查看次数

epoll()在O(1)中完成它的工作吗?

维基百科说

与在O(n)下运行的旧系统调用不同,epoll在O(1)[2]中运行.

http://en.wikipedia.org/wiki/Epoll

但是,Linux-2.6.38上fs/eventpoll.c的源代码似乎是用RB树实现搜索的,它有O(logN)

/*
 * Search the file inside the eventpoll tree. The RB tree operations
 * are protected by the "mtx" mutex, and ep_find() must be called with
 * "mtx" held.
 */
static struct epitem *ep_find(struct eventpoll *ep, struct file *file, int fd)
{
Run Code Online (Sandbox Code Playgroud)

事实上,我看不到任何手册页说epoll()的复杂性是O(1).为什么它被称为O(1)?

linux network-programming epoll

55
推荐指数
1
解决办法
2496
查看次数

为什么epoll比选择更快?

我看过很多比较,其中说select必须遍历fd列表,这很慢.但为什么epoll不能做到这一点?

select epoll

53
推荐指数
2
解决办法
2万
查看次数

事件驱动和异步之间有什么区别?在epoll和AIO之间?

事件驱动和异步通常用作同义词.这两者有什么不同吗?

另外,epoll和之间有什么区别aio?它们如何结合在一起?

最后,我多次读过Linux中的AIO被严重破坏.究竟是怎么破碎的?

谢谢.

linux asynchronous epoll aio event-driven

40
推荐指数
2
解决办法
1万
查看次数

Windows上最好的epoll/kqueue/select equvalient是什么?

什么是Windows最好的I/O事件通知工具?

最好的我的意思是......

  1. 对输入文件描述符的数量没有限制
  2. 适用于所有文件描述符(磁盘文件,套接字......)
  3. 提供各种通知模式(边缘触发,限制触发)

windows io notifications epoll

35
推荐指数
2
解决办法
3万
查看次数

epoll线程安全吗?

epoll有两个功能:

  1. epoll_ctl
  2. epoll_wait

当我使用相同的epoll_fd时,它们是否是线程安全的
如果一个线程调用epoll_wait而其他线程同时调用epoll_ctl会发生什么?

c sockets multithreading network-programming epoll

32
推荐指数
2
解决办法
1万
查看次数

Linux 3.2内核与2.6内核接受不良平衡的套接字

我正在运行一个相当大规模的Node.js 0.8.8应用程序,使用带有16个工作进程的Cluster,在具有超线程的16处理器盒子上(所以32个逻辑核心).我们发现自从迁移到Linux 3.2.0内核(从2.6.32开始)以来,工作者子进程之间的传入请求的平衡似乎被大量加权到5个左右的进程,而其他11个进程根本没有做太多工作.这可能对吞吐量更有效,但似乎增加了请求延迟并且对我们来说不是最佳的,因为其中许多是长期的websocket连接,可以同时开始工作.

子进程都在套接字上接受(使用epoll),虽然这个问题在Node 0.9(https://github.com/bnoordhuis/libuv/commit/be2a2176ce25d6a4190b10acd1de9fd53f7a6275)中有一个修复,但该修复似乎没有帮助我们的测试.是否有人知道内核调优参数或构建选项可能有所帮助,或者我们最好使用不同的方法回到2.6内核或跨工作进程进行负载平衡?

我们将其归结为一个简单的HTTP Siege测试,但请注意,这是在带有超线程的12核盒子上进行12次触发(因此有24个逻辑核心),并且有12个工作进程在套接字上接受,而不是我们的16在生产过程中.

在Debian Squeeze上使用Node 0.9.3进行HTTP Siege,在裸机上使用2.6.32内核:

reqs pid
146  2818
139  2820
211  2821
306  2823
129  2825
166  2827
138  2829
134  2831
227  2833
134  2835
129  2837
138  2838
Run Code Online (Sandbox Code Playgroud)

除了3.2.0内核以外的一切:

reqs pid
99   3207
186  3209
42   3210
131  3212
34   3214
53   3216
39   3218
54   3220
33   3222
931  3224
345  3226
312  3228
Run Code Online (Sandbox Code Playgroud)

linux kernel epoll http node.js

26
推荐指数
1
解决办法
1863
查看次数

你能推荐一些关于Linux上Epoll的指南吗?

我需要了解Epoll On linux System.

你能推荐关于epoll库的手册或指南吗?

需要更详细的指南.有一些例子比较好.

帮我.谢谢你的阅读

c++ linux epoll

25
推荐指数
2
解决办法
3万
查看次数