我打算編寫一個程序來偵聽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