epoll并发送滞后

我正在使用Linux 64位Linux scv 3.2.0-39-generic #62-Ubuntu SMP Thu Feb 28 00:28:53 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux并且有两个使用在同一物理主机上运行的套接字的进程。

一个进程(A)在TCP / IP套接字(在主机相同的情况下是本地套接字)上发送以下几条数据:

  • 276字节
  • 16个字节
  • 这是在0.000023秒的表格过程A中完成的。正在发送的数据调用2次send套接字API。

    另一个过程(B)使用epoll_wait(efd, events, 10, 5)通过epoll接收数据epoll_wait(efd, events, 10, 5) 。 数据收到如下(时间是采用clock_gettime(CLOCK_REALTIME, &cur_ts);重要的是相对差异):

  • 从套接字缓冲区读取数据,地址为8051.177743(276)
  • 再次致电epoll 8051.177763
  • 从套接字缓冲区读取数据8051.216250(16)
  • 使接收过程滞后0.038507秒。 基本上,如果发送进程A的时间少于一个ms,那么在接收端epoll接收数据会增加大约0.038秒的额外延迟。

    这是预期的吗? 我究竟做错了什么?
    或者我该如何改善这种状况?

    谢谢


    这是预期的吗? ...

    是。 我会期待的。 原因如下:

    我究竟做错了什么? ...

    epoll旨在用于需要监视大量文件描述符的情况。 这就是它适合的,在我看来,你使用它的情况并非如此。

    ......我该如何改善这种状况?

    如果您想提高性能,请使用正确的工具进行工作。 不要将epoll用于单个插槽。 只要使用普通的旧香草recv。 如果您正在处理两个或三个套接字,请考虑使用轮询或选择。 如果你冒险进入数百人,那么你可能要考虑使用epoll或kqueue。

    链接地址: http://www.djcxy.com/p/61349.html

    上一篇: epoll and send lag

    下一篇: multithreaded epoll