[英]Low latency packet processing with shared memory on Linux?
如果我要在Linux上接收UDP數據包(我不介意更改一些源代碼),那么我的應用程序讀取數據包的最快方法是什么?
我是否要修改網絡堆棧,以便一旦收到UDP數據包,它就會寫入共享內存並讓應用程序訪問該內存?
是否有任何方法讓堆棧通知應用程序做出反應,而不是讓應用程序連續輪詢共享內存?
歡迎任何建議/進一步資源 - 我只看到:
如果延遲是一個問題,並且默認的UDP網絡堆棧沒有按您的意願執行,那么嘗試使用不同的現有(可安裝)網絡堆棧。
例如,嘗試UDP Lite ,與標准UDP堆棧相比,此特定堆棧不會對UDP數據報執行任何校驗和,從而以向應用程序層提供損壞的數據報為代價來減少延遲。
旁注:您不需要“輪詢”機制。 閱讀select
的手冊(它可能是pselect
或ppoll
等衍生產品),使用這樣的API,內核將在管道中讀取或寫入內容后立即“喚醒”您的應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.