簡體   English   中英

在Linux上使用共享內存進行低延遲數據包處理?

[英]Low latency packet processing with shared memory on Linux?

如果我要在Linux上接收UDP數據包(我不介意更改一些源代碼),那么我的應用程序讀取數據包的最快方法是什么?

我是否要修改網絡堆棧,以便一旦收到UDP數據包,它就會寫入共享內存並讓應用程序訪問該內存?

是否有任何方法讓堆棧通知應用程序做出反應,而不是讓應用程序連續輪詢共享內存?

歡迎任何建議/進一步資源 - 我只看到:

http://www.kegel.com/c10k.html

如果延遲是一個問題,並且默認的UDP網絡堆棧沒有按您的意願執行,那么嘗試使用不同的現有(可安裝)網絡堆棧。

例如,嘗試UDP Lite ,與標准UDP堆棧相比,此特定堆棧不會對UDP數據報執行任何校驗和,從而以向應用程序層提供損壞的數據報為代價來減少延遲。

旁注:您不需要“輪詢”機制。 閱讀select的手冊(它可能是pselectppoll等衍生產品),使用這樣的API,內核將在管道中讀取或寫入內容后立即“喚醒”您的應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM