分享

Java

 一守望先锋一 2019-08-04

知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停的来唤醒你记忆深处的知识点。

一、高效的epoll

epoll 是Linux下,高效的多路复用技术,也是Linux下高性能网络服务器的关键技术。 通过网络socket链接,把远程资源加载到本地内存中。如何来优化这个性能呢?

二、epoll提出原因

2.1.poll和select 相对之前的AIO有很大的提高,但是由于需要监视着“等待队列”与及“阻塞进程”,性能还是未完全释放。  这个时候CPU又被别的进程给抢走,上下文切换的性能又被消耗。

2.2.select 要进行遍历,才能感知到那个socket来了数据,因此select只能一个一个遍历,来唤醒每个socketChanel。

三、epoll原理

3.1 epoll监视多个socket, 改进了select维护等待队列和阻塞进程进一步改进。把这两步动作给拆分开来。

3.2 epoll_ctl 维护等待队列

3.3 epoll_wait 阻塞队列

四、eventpoll

4.1  调用epoll_create方法,另外会创建一个eventpoll对象。

4.2  eventpoll维护着就绪列表,如果有socket来数据,就把socket添加到就绪列表。

4.3  阻塞进程收到就绪列表的回调,既可以开始socket数据传输工作。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多