select机制
select本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是:
1 单个进程可监视的fd数量被限制

2 需要维护一个用来存放大量fd的数据结构,这样会使得用户空间和内核空间在传递该结构时复制开销大

3 对socket进行扫描时是线性扫描

poll机制
poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态,如果设备就绪则在设备等待队列中加入一项并继续遍历,如果遍历完所有fd后没有发现就绪设备,则挂起当前进程,直到设备就绪或者主动超时,被唤醒后它又要再次遍历fd。这个过程经历了多次无谓的遍历。

它没有最大连接数的限制,原因是它是基于链表来存储的,但是同样有一个缺点:大量的fd的数组被整体复制于用户态和内核地址空间之间,而不管这样的复制是不是有意义。

poll还有一个特点是“水平触发”,如果报告了fd后,没有被处理,那么下次poll时会再次报告该fd。

epoll机制
epoll支持水平触发和边缘触发,最大的特点在于边缘触发,它只告诉进程哪些fd刚刚变为就需态,并且只会通知一次。
在前面说到的复制问题上,epoll使用mmap减少复制开销。

还有一个特点是,epoll使用“事件”的就绪通知方式,通过epoll_ctl注册fd,一旦该fd就绪,内核就会采用类似callback的回调机制来激活该fd,epoll_wait便可以收到通知

在选择select,poll,epoll时要根据具体的使用场合以及这三种方式的自身特点。表面上看epoll的性能最好,但是在连接数少并且连接都十分活跃的情况下,select和poll的性能可能比epoll好,毕竟epoll的通知机制需要很多函数回调。

linux中的轮询机制select/poll/epoll特点分析相关推荐

  1. linux中dns轮询,linux实现DNS轮询实现负载平衡

    linux实现DNS轮询实现负载平衡 DNS轮询机制会受到多方面的影响,如:A记录的TTL时间长短的影响:别的DNS服务器Cache的影响:windows客户端也有一个DNS Cache.这些都会影响 ...

  2. RocketMQ 消息消费 轮询机制 PullRequestHoldService

    1. 概述 先来看看 RocketMQ 消费过程中的轮询机制是啥.首先需要补充一点消费相关的前置知识. 1.1 消息消费方式 RocketMQ 支持多种消费方式,包括 Push 模式和 Pull 模式 ...

  3. (原创)Linux设备轮询机制分析

    一. 设备轮询机制的基本思想 所谓的设备轮询机制实际上就是利用网卡驱动程序提供的NAPI机制加快网卡处理数据包的速度,因为在大流量的网络环境当中,标准的网卡中断加上逐层的数据拷贝和系统调用会占用大量的 ...

  4. MCDF中arbiter的轮询机制

    更新的MCDF的仲裁器采用的是Round Robin轮询的一个仲裁机制,简单来说就是最先被授权的通道在下一次仲裁中优先级会变为最低,这样可以保证每个通道都能够获得授权,而不是一个通道长时间连续的进行数 ...

  5. Node中的事件轮询机制

    文章目录 2 node中的事件循环模型 2-1 一些属性 2-2 循环模型 node事件循环总共有==六个阶段== process.nextTick()函数 __实例__ 2 node中的事件循环模型 ...

  6. IO多路复用select/poll/epoll详解以及在Python中的应用

    IO multiplexing(IO多路复用) IO多路复用,有些地方称之为event driven IO(事件驱动IO). 它的好处在于单个进程可以处理多个网络IO请求.select/epoll这两 ...

  7. linux网络编程--select/poll/epoll 详解

    目录 参考链接 epoll函数 close epoll event EL/LT ET Edge Trigger 边沿触发工作模式 LT Level Trigger 水平触发工作模式 epoll 源码解 ...

  8. linux poll函数 实现,Linux select/poll/epoll 原理(一)实现基础

    本序列涉及的 Linux 源码都是基于 linux-4.14.143 . 1. 文件抽象 与 poll 操作 1.1 文件抽象 在 Linux 内核里,文件是一个抽象,设备是个文件,网络套接字也是个文 ...

  9. linux主备dns切换时间,linux实现DNS轮询实现负载平衡

    导读 DNS 轮询机制会受到多方面的影响,如:A记录的TTL时间长短的影响:别的 DNS 服务器 Cache 的影响:windows 客户端也有一个DNS Cache.这些都会影响 DNS 轮询的效果 ...

  10. ajax定时轮询机制图解,通过Ajax调用的轮询机制

    我需要添加轮询机制来通过我的网页调用Web服务.为此,我尝试在javascript页面内使用ajax呼叫.我对ajax和javascript很新.我写了下面的代码.通过Ajax调用的轮询机制 func ...

最新文章

  1. java中的Executors简介与多线程在网站上逐步优化的运用案例
  2. fmod实现声音波形_“老张说数理化”—中考物理专题02-声音与环境(收藏可打印)...
  3. 被劝退的学渣,逆袭成高级语言之父,改变编程方式却说“不喜欢写代码”!...
  4. 集合详解(三)----Map的两种遍历方式
  5. Vue.js 对比其他框架
  6. 【AI基础】OpenCV,PIL,Skimage你pick谁
  7. Struct复杂数据类型的UDF编写、兼容HIVE的GenericUDF编写
  8. mysql 按照条件计数_灵活的CASE...WHEN:SQL同时按条件计数按条件加和
  9. leetcode python3 简单题121. Best Time to Buy and Sell Stock
  10. 页面字符编码不一致的处理
  11. Flink流处理中的表
  12. Hive 动态分区入门
  13. 在使用体验上,VS远远不如Eclipse
  14. HP服务器远程管理工具iLO详细介绍
  15. 自驱力超强的羊驼?斯坦福微调LLaMa
  16. 控件、组件和插件的区别
  17. 五 . css系列之文本段落属性及应用
  18. 赋值运算符和赋值表达式
  19. 怎么转换CAD图纸格式?三种方法帮你搞定CAD转PDF格式操作!
  20. SpringMVC(三)——响应

热门文章

  1. 简述redux(1)
  2. 【RN6752】模拟高清AHD芯片或成为车机新标配
  3. Linux用户及用户组设置
  4. 生成式建模“回归”信息抽取
  5. 【QA】揭开知识库问答KB-QA的面纱1·简介篇
  6. 【NLP之情感分析】华为云NLP算法专家:全面解读文本情感分析任务
  7. 基于特定实体的文本情感分类总结(PART II)
  8. 整理一些计算机基础知识!
  9. 深度学习2.0-30.卷积神经网络之池化与采样
  10. 从零实现深度学习框架——过拟合与欠拟合