美文网首页
Linux之网络篇

Linux之网络篇

作者: 知止9528 | 来源:发表于2019-02-24 10:01 被阅读2次

    常见的性能指标

    • 通用带宽

    表示链路的最大传输速率,单位为b/s(比特/秒)

    • 吞吐量

    表示单位时间内成功传输的数据量,单位通常为b/s(比特/秒)或者B/s(字节/秒)。吞吐量受带宽的限制

    • 延时

    可以表示建立连接需要的时间(TCP握手延时),或者一个数据包往返所需要的时间(如RTT)

    • PPS(Packet Per Second)

    表示以网络包为单位的传输速率,通常用来评估网络的转发能力

    • 网络的可用性

    能否正常通信

    • 并发连接数

    TCP连接数量

    • 丢包率
    • 重传率

    I/O事件通知的方式

    • 水平触发

    应用程序可以随时检查文件描述符的状态,然后再根据状态,进行I.O操作

    • 边缘触发

    只在文件描述符的状态发生改变(也就是I/O请求达到)时,才发送一次通知.这个时候,应用程序需要尽可能多地执行I/O,指导无法继续读写,才可以停止.如果I/O没执行完,或者因为某种原因没来得及处理,那么这次通知也就丢失了


    I/O多路复用的方法

    使用非阻塞I/O和水平触发通知,比如使用select或者poll

    select和poll需要从文件描述符列表中,找出哪些可以执行I/O,然后进行真正的网络I/O,然后进行真正的网络I/O读写.由于I/O是非阻塞的,一个线程中就可以同时监控一批套接字的文件描述符

    select和poll的一些限制

    select使用固定长度的位相量,表示文件描述符的集合,因此会有最大描述符数量的限制,在32位系统中,默认限制是1024.同时,在select内部,检查套接字状态用的是轮询的方法,再加上应用软件使用时的轮询,就变成了一个O(N^2)的关系.

    poll改进了select的表示方法,换出了一个没有固定长度的数组,这样就没有了最大描述符数量的限制.但应用程序依然需要对描述符进行轮询,这样就是O(N)的关系

    select和poll都需要把文件描述符的集合,从用户空间传入内核空间,由内核修改后,再传出到用户空间,增加了处理成本


    使用非阻塞I/O和边缘触发通知,如epoll

    epoll使用红黑树,在内核中管理文件描述符的集合,这样就减少了从内核态切换到用户态的成本
    epoll使用事件驱动的机制,只关注有I/O时间发生的文件描述符,不需要轮询扫描整个集合

    相关文章

      网友评论

          本文标题:Linux之网络篇

          本文链接:https://www.haomeiwen.com/subject/qysvyqtx.html