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套接字(在主机相同的情况下是本地套接字)上发送以下几条数据:
这是在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);
重要的是相对差异):
使接收过程滞后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