epoll的优劣与原理分析

2020-08-01 18:00 PHP开源社区


epoll事件驱动模型与poll的比较

  • X轴为句柄数
  • Y轴为响应时间
  • 可以看到epoll几乎不受句柄数的增加的影响


epoll事件驱动模型的原理


epoll与poll的比较

  • epoll存储活跃的连接,每次只处理活跃的连接数量占比很小

  • poll是每次将所有的连接交给操作系统去遍历,找出活跃的连接,因此连接越多

  • 耗时越长

epoll 如何实现只处理活跃连接

  • epoll实现了eventpoll数据结构

  • 数据结构中rdlist将活跃连接存储在链表中,当网卡发送报文时,增加节点,当读取一个事件后,链表删除节点,需要得到活跃连接就只需要遍历链表

  • 数据结构中rdr使用红黑树(自平衡二叉树)将事件存储,例如:当有读事件时,就新增节点,事件复杂度为logN




来源:吕艳凯
https://www.jianshu.com/p/ee4f9a5a11ac


岁月峥嵘

不忘初心

-PHP开源社区-


平庸懒惰

不求上进

本文章转载自公众号:phpopensource

首页 - PHP 相关的更多文章: