我正在使用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 。发送的数据是send
套接字API的2倍。
另一个进程( B )使用epoll_wait(efd, events, 10, 5)
通过 epoll 接收数据。收到的数据如下(时间采用clock_gettime(CLOCK_REALTIME, &cur_ts);
,重要的是相对差异):
使接收过程滞后为0.038507秒。基本上,如果发送过程 A 小于 ms ,则在接收端 epoll 接收数据会增加大约0.038秒的额外延迟
这是预期的吗?我做错了什么?
或者我该如何改善这种情况?
由于
答案 0 :(得分:0)
这是预期的吗? ...
是。我希望如此。原因如下:
我做错了什么? ...
epoll旨在用于需要监视大量文件描述符的情况。这就是它的适用范围,在我看来,你为使用它的情况不是那种情况。
......我怎样才能改善这种状况?
如果您想提高效果,使用适合工作的工具。不要将epoll用于单个插槽。只需使用普通的香草回收。如果您正在处理两个或三个套接字,请考虑使用poll或select。如果您冒险尝试数百种,那么您可能需要考虑使用epoll或kqueue。