可能有人解释的区别是什么之间epoll,poll和线程池?
epoll和poll有特定的Linux ...是否有适用于Windows的等量替代?我正在设计一个新服务器,它需要支持数千个UDP连接(大约100,000个会话).有哪些输入或建议可供使用?
来自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)
什么时候会使用边缘触发选项?手册页给出了一个使用它的示例,但我不明白为什么在示例中有必要.
维基百科说
与在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)?
事件驱动和异步通常用作同义词.这两者有什么不同吗?
另外,epoll和之间有什么区别aio?它们如何结合在一起?
最后,我多次读过Linux中的AIO被严重破坏.究竟是怎么破碎的?
谢谢.
什么是Windows最好的I/O事件通知工具?
最好的我的意思是......
epoll有两个功能:
当我使用相同的epoll_fd时,它们是否是线程安全的?
如果一个线程调用epoll_wait而其他线程同时调用epoll_ctl会发生什么?
我正在运行一个相当大规模的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) 我需要了解Epoll On linux System.
你能推荐关于epoll库的手册或指南吗?
需要更详细的指南.有一些例子比较好.
帮我.谢谢你的阅读
epoll ×10
linux ×5
sockets ×3
asynchronous ×2
c ×2
aio ×1
c++ ×1
event-driven ×1
http ×1
io ×1
kernel ×1
node.js ×1
posix-select ×1
select ×1
windows ×1