我們在試驗中,採用了
napi
技術,pf_ring
技術,mmap
技術,rtirq
技術。在網絡卡抓包的時候,未採用
napi
的程式在每個包到達時,由網絡卡硬體觸發核心中斷。這樣,如果在高流量
gbit
情況下,核心忙於處理由頻繁的中斷而引發的現場儲存和恢復,而無暇處理其他,導致包的丟失。現在採用
napi
技術(需要網絡卡支援和版本在
2.4.23
以上的核心),由作業系統採用輪詢的方式來處理中斷,即中斷的控制權交給作業系統,網絡卡在判斷出有乙個包到達時,不會引發中斷,只用當作業系統輪詢到該裝置時,網絡卡中斷才有效。當核心裝置輪詢佇列未輪詢到該網絡卡時,在此期間,到來的包都被放入網絡卡的環形緩衝區中。直到輪詢到來,對於未採用
pf_ring
技術的核心,作業系統將包拷貝到核心協議棧緩衝區中進行排隊,而採用
pf_ring
技術,作業系統將包採用
dma方式拷貝到核心緩衝區的環形佇列中,再把網絡卡緩衝區中收到的這些包丟棄,不把他們傳入核心協議棧快取區中進行排隊。環形快取區在每個套接字被建立時分配,直到套接字關閉時,環形快取區才被釋放。每次由網絡卡快取區拷入核心環形快取區時,不會進行分配和去配的操作,而是新到的包按環形的方式,將原有的包覆蓋。
pf_ring
技術提供了對
mmap
技術的支援。該技術將使用者應用程式空間對映到核心快取區,從而省略了將資料從核心快取區向使用者快取區的拷貝操作。即所說的零拷貝技術。這樣可以節省一次拷貝所占用的系統資源,和縮短包處理的時間。
rtirq
技術是用來確定核心中斷的時間片的。當作業系統每次將包從網絡卡快取拷貝到核心環形快取時,都會引發乙個中斷,這個中斷會要求呼叫使用者程式對核心中的資料進行處理,當在大流量網路環境下,這樣的中斷也是很頻繁的。會消耗大量的系統資源,所以我們採用合適的時間片,使核心「睡眠」一小段時間,即在核心「睡眠」過程中,每次將包拷貝到核心快取區時,不會引發中斷,直到度過了這個時間片,核心就會使由核心包拷貝引發的中斷生效,如果這時有資料報被拷貝到核心,則引發中斷,如果等待了一定的時間,還沒有包拷貝到核心,則核心繼續睡眠。該技術就被稱為
rtirq。
以上是我對這些技術的理解。不知道分析的對不對。希望有高人更正和補充。
匯入論壇 引用鏈結 收藏 分享給好友 管理 舉報
tag:
引用刪除
netarchon
/ 2009-05-27 05:21:12
樓主對rtirq的解釋不對,你的理解其實指的是device polling,在乙個中斷期間禁用該裝置的中斷,並一直poll該裝置中接收的資料報,直到沒有了或超過一定的數量或超過一定的時間,才重新使能該裝置。而rtirq是為了保證系統呼叫有乙個time上的constraint,在pf_ring中主要是為了解決poll開銷太大的問題,不過最近採用adaptive 的poll已經解決了這個問題。
採用pf_ring
技術,作業系統將包採用
dma方式拷貝到核心緩衝區的環形佇列中,再把網絡卡緩衝區中收到的這些包丟棄,不把他們傳入核心協議棧快取區中進行排隊。環形快取區在每個套接字被建立時分配,直到套接字關閉時,環形快取區才被釋放。每次由網絡卡快取區拷入核心環形快取區時,不會進行分配和去配的操作,而是新到的包按環形的方式,將原有的包覆蓋。
pf_ring
技術提供了對
mmap
技術的支援。該技術將使用者應用程式空間對映到核心快取區,從而省略了將資料從核心快取區向使用者快取區的拷貝操作。即所說的零拷貝技術。這樣可以節省一次拷貝所占用的系統資源,和縮短包處理的時間。
我對android中Activity的理解
一 activity是什麼 在我們的應用中,我們看到裝置螢幕顯示出來的東西都是屬於activity的,activity可以說是乙個平台,這個平台上我們用來展示view的各種子類 布局 控制項 自定義的view activity就像乙個魚缸或者窗戶,而view就像魚缸的水和魚,窗戶外面的風景。我們看到...
我對字元裝置驅動的理解
實驗要求 編寫簡單的字元裝置驅動模組,能夠支援建立和刪除節點,節點進行讀寫操作時分別列印 you are reading 和 you are writing 思想整理 1.本實驗需要我們編寫乙個驅動程式,如mymodule.c 2.該驅動程式經編譯後生成.ko檔案,使用makefile檔案生成mym...
顛覆我對裝置廠家的認識
提供開源硬體產品 嵌入式軟硬體開發 技術諮詢 店 以前看到某某企業聲稱研發 生產 銷售一體化,比如我參觀過做新能源充電樁的 汽車波箱油換油機的 工業雷射焊接機的 家電做破壁機的等等。實際上絕大多數裝置企業根本沒有自己的研發,都是採用方案外包,這樣大大降低人力成本和風險。現在中小企業分工很細很專業,做...