C10K问题研究

1 epoll的两种工作模式

(1) LT水平触发
该模式为缺省的工作模式,并且同时支持block与non-block。在这种模式下,内核会告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作,如果你不做任何操作,内核还是会继续通知你的,该模式与传统的select以及poll模式是相同的。
(2) ET边缘触发
该模式只支持non-block模式,在这种模式下,当描述符从未就绪变为就绪时,内核通知以后就会假设用户空间程序已经知道文件描述符已经就绪,并且不会再为那个文件描述符发送更多的就绪通知,直到你做了某些操作导致那个文件描述符不再处于就绪状态了。如果用户空间程序一直不对这个fd做io操作(从而使得它再次转为未就绪),内核不会发送更多的通知。

2 epoll优于传统select及poll有以下几点:
(1) epoll不会随着fd数目的增长而效率降低,而且一个进程同时打开的fd数目的限制也不会成为瓶颈。
(2) epoll使用mmap来进行内核与用户空间的消息传递,以此避免内存拷贝的代价。

3 参考文献
(1) 高负载高应用参考索引
(2) 开发高性能服务器的思考
(3) 高性能服务器架构
(4) linux性能监控
(5) 压力测试衡量CPU的三个指标
(6) The C10K problem
(7) ThreadBuildingBlocks

你可能感兴趣的:(c,linux,工作,IO,测试,服务器)