epoll的特点

  1. 支持一个进程打开的socket描述符(fd)不受限制(仅受限于操作系统的最大文件句柄数)
    select最大的缺陷单个进程锁打开的fd是由一定限制的,由FD_SETSIZE设置(默认1024),想要修改需要重新编译内核。Java由于没有共享内存,需要通过socket或其他方式进行数据同步,有额外性能开销。epoll没有这个限制,可支持的fd位操作系统最大文件句柄数,1G内存大约10万个句柄。
  2. I/O效率不会随着fd数目增加而线性下降
    select每次都会现行扫描全部集合,在网络延时或链路空闲时,效率会比较低。epoll首先会向每个fd上注册事件,当fd状态就绪时,会调用callback,不需要遍历所有的fd。只有在所有的socket都处于活跃状态,epoll才会没有优势,甚至效率低于select
  3. 使用mmap加速内核与用户空间的消息传递
    在这里插入图片描述
    用户进程是无法访问到是无法访问到kernel space的,传统的文件读取都是要从kernel buffer执行copy到user space,而mmap做了kernel buffer到user space的地址映射,避免了一次copy,而且mmap在读取时仅在kernel buffer中不存在时,再去读取磁盘中的数据。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只努力的微服务

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值