日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

为什么内核态转发性能低?

發布時間:2023/12/1 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 为什么内核态转发性能低? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現在很多人都在詬病Linux內核協議棧收包效率低,不管他們是真的懂還是一點都不懂只是聽別人說的,反正就是在一味地懟Linux內核協議棧,他們的武器貌似只有DPDK。

但是,即便Linux內核協議棧收包效率真的很低,這是為什么?有沒有辦法去嘗試著優化?而不是動不動就DPDK。

我們從最開始說起。

Linux內核作為一個通用操作系統內核,脫胎于UNIX那一套現代操作系統理論。

但一開始不知道怎么回事將網絡協議棧的實現塞進了內核態,從此它就一直在內核態了。既然網絡協議棧的處理在內核態進行,那么網絡數據包必然是在內核態被處理的。無論如何,數據包要先進入內核態,這就涉及到了進入內核態的方式:

外部可以從兩個方向進入內核-從用戶態系統調用進入或者從硬件中斷進入。

也就是說,系統在任意時刻,必然處在兩個上下文中的一個:

進程上下文

中斷上下文 (在非中斷線程化的系統,也就是任意進程上下文)

收包邏輯的協議棧處理顯然是自網卡而上的,它顯然是在中斷上下文中,而數據包往用戶進程的數據接收處理,顯然是在應用程序的進程上下文中, 數據包通過socket在兩個上下文中被轉接。

在socket層的數據包轉接處,必然存在著一個隊列緩存,這是一個典型的 生產者-消費者 模型,中斷上下文的終點作為生產者將數據包入隊,而進程上下文作為消費者從隊列消費數據包

總結

以上是生活随笔為你收集整理的为什么内核态转发性能低?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。