gpt4 book ai didi

c - epoll 和发送滞后

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:37 25 4
gpt4 key购买 nike

我正在使用 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 套接字(如果主机相同,则为本地套接字)上发送以下数据:

  1. 276 字节
  2. 16 字节

这是在 0.000023 秒内从进程 A 完成的。正在发送调用 send 套接字 API 两次的数据。

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

  1. 从 8051.177743 (276) 的套接字缓冲区读取数据
  2. 再次调用epoll 8051.177763
  3. 从socket buffer 8051.216250 (16)读取数据

使接收过程滞后 0.038507 秒。基本上,如果发送进程 A 花费的时间少于 ms,在接收端 epoll 接收数据会增加大约 0.038 秒的额外延迟.

这是预期的吗?我做错了什么?
或者我怎样才能改善这种情况?

谢谢

最佳答案

Is this expected? ...

是的。我希望如此。原因如下:

What am I doing wrong? ...

epoll 被设计用于需要监视大量文件描述符的情况。这就是它的适用范围,在我看来,您使用它的情况不是那种情况。

... how can I improve the situation?

如果您想提高性能,请使用正确的工具。不要将 epoll 用于单个套接字。只需使用普通的 Vanilla recv。如果您处理两个或三个套接字,请考虑使用轮询或选择。如果您尝试使用数百个,那么您可能需要考虑使用 epoll 或 kqueue。

关于c - epoll 和发送滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15742954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com