• Netty复习——select与epoll对比


    1.支持一个进程打开的socket描述符fd不受限制(仅受限于操作系统的最大文件句柄数)。说到Linux系统最大文件句柄数,在Linux性能调优的时候,这个是比较经常调试的参数。

    借鉴了其他人的文章。https://blog.51cto.com/12824426/2060594

    select最大的缺陷就是单个进程所打开的fd是有一定限制的,它由fd_setsize 设置,默认值是1024.对于需要支持上万个TCP连接的大型服务器来说显然太少了。可以选择修改这个宏然后重新编译内核,

    不过这会带来网络效率的下降。

    2.I/O效率不会随着FD数目的增加而线性下降。

    传统的select/poll就是当一个很大的socket集合,由于网络延时或者链路空闲,任一时刻只有少部分socket是活跃的,但是select/poll每次调用都会线性扫描全部的集合,导致效率呈现线性下降。epoll不存在这个问题

    它只会对活跃的socket进行操作,这是因为在内核实现中epoll是根据每个fd的callback函数来实现的,只有活跃的socket才会主动去调用callback函数。

    3.使用mmap加速内核与用户空间的消息传递。

    无论是select,poll还是epoll都需要把内核fd消息通知给用户空间,如何避免不必要的内存赋值就很重要,epoll是通过内核和用户空间的mmap同一块内存实现的。

  • 相关阅读:
    暑假第二周总结
    7.18-7.24 第一周周报
    poj 3295 Tautology
    2016多校 #2 1006 Fantasia
    codeforces 698B Fix a Tree
    codeforces 699B Bomb
    HDU 4578(线段树
    CF 600F( 二分图
    hdu 5517 Triple(二维树状数组)
    HDU HDOJ5412(树套树or整体二分
  • 原文地址:https://www.cnblogs.com/ligtto2018/p/14043469.html
Copyright © 2020-2023  润新知