gpt4 book ai didi

linux - select watchsocket fd 唤醒太慢

转载 作者:太空宇宙 更新时间:2023-11-04 05:05:15 24 4
gpt4 key购买 nike

我在 select() 方面遇到延迟问题。实际上我不确定这是否是 select() 的问题。

故事如下。

  1. 我正在使用 select() 来检测套接字 fd 事件。
  2. select() 唤醒后,我执行 recv() 从套接字缓冲区获取数据流。
  3. 这没问题,而且效果很好。

但是...存在延迟问题...我有 NIC tcpdump 时间戳,应用程序的 select() 唤醒时间戳。这些时间戳差异很大,超过“15us”。

我的应用程序中没有大逻辑,只需在 select() 唤醒后立即执行 select() 套接字 fd 并使用 gettimeofday() 函数获取时间戳。我不知道为什么需要那么长时间才能唤醒 select()。

我进行了测试以确定 select() 是否是问题所在。1.没有选择,只是循环到recv()套接字fd,直到获得第一个数据。2.网卡获取数据流,我得到tcpdump timestmap3.recv()获取第一个数据流。4.我在第一次recv()成功后立即得到时间戳。

此测试显示 NIC 时间戳和 recv() 第一个时间戳之间存在很大差异。

总结...网卡获取数据流后。 1. select()检测socket fd,我认为它需要15us以上。 2.没有select()检测套接字fd,只有recv()循环直到我得到第一个数据, 也需要超过 15us。

请有人帮助我...这个数字可以接受吗? (我的意思是超过 15us。)或者有一个我不知道的检查点??

服务器 HP,操作系统 redhat 6.2 内核 2.6

最佳答案

这是通用操作系统中的调度延迟。您唯一的选择可能是切换到实时操作系统。

关于linux - select watchsocket fd 唤醒太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16888712/

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