我打算编写一个程序来侦听UDP端口,然后将数据分派到多个服务器实例。服务器软件的代码已经构造为侦听端口本身,而不是从本地运行的另一个程序接收数据。所以我的想法基本上是通过回送接口创建从前端程序到服务器实例的第二个UDP流。 应用程序对延迟非常关键,即开销不应超过1毫秒。我想知道那么这是否是最好的方法:我担心这个数据包会再次被内核调度(Linux,在我的情况下)。如果我是对的,这个延迟是否会显着?如果是这样,是唯一的解决方案来重写前端和服务器应用程序之间的新型进程间通信?通过环回接口调度UDP数据包的延迟?
1
A
回答
0
调度不是真正的问题。如果进程或线程正在等待select()
或recvmsg()
,它应该几乎立即被传入的数据报唤醒。 (发送者在调用sendmsg()
时放弃其CPU片,内核通过回送传递消息,然后接收者将高于调度器中的发送者。)
通过回送接口的延迟将是亚毫秒,假设接收器已准备好接收。
大部分的延迟时间都来自每个接收器在从套接字读取数据包之间进行的操作。例如,如果接收器在收据之间需要0.5毫秒的CPU时间处理,那么您的延迟时间将大约为0.5毫秒。但是如果你每CPU核心运行3个这样的接收器,那么你的延迟不能少于1.5毫秒。
相关问题
- 1. UDP数据报包接收循环延迟
- 2. 通过UDP数据包延迟音频提交
- 3. 获取数据包的延迟(TCP \ UDP)
- 4. 返回通过延迟回调
- 5. 在Python中实时接收UDP数据包时的延迟
- 6. UDP数据读取不正确(延迟)
- 7. VB6接口方法的延迟调用
- 8. UDP延迟潜力
- 9. TCP RST数据包延迟数据包
- 10. Python:从端口接收UDP数据包
- 11. 如何查找UDP数据包延迟时间
- 12. 延迟Blur回调
- 13. 延迟执行,包括成功回调
- 14. 延迟调度调用?
- 15. 获取总延迟 - UDP音频通信
- 16. 什么导致udp接收延迟?
- 17. 通过Java发送UDP数据包
- 18. 通过UDP发送数据包
- 19. 通过udp发送数据包
- 20. 通过Linux上的UDP进行延迟测量
- 21. AUGraph回调中的延迟
- 22. 通过recvfrom(UDP)接收数据包的一部分
- 23. 延迟jquery循环延迟
- 24. 通过调整窗口大小延迟计时器
- 25. 在GWT中通过延迟绑定实例化一个接口?
- 26. 通过VLAN的HTTPS延迟
- 27. 通过udp从simulink块接收数据
- 28. 通过UDP套接字发送数据
- 29. 通过UDP连接发送数据(Bridge)
- 30. 通过UDP接收实时GPS数据
你不能只说“延迟是关键”。 *多少*延迟太多?你将不得不尝试。我不知道你的意思是“UDP流”。 UDP不是流,它是一系列数据包。 – EJP 2012-03-26 22:27:41
通过关键我的意思是我不想有超过1毫秒的响应性的缺点。而关于UDP流,好吧,选择你喜欢的同义词:谈话,转换,数据包交换。 – 2012-03-26 22:39:16