雲端衛士的新欄目《實戰錄》將會定期分享一些我們的工程師夥伴們在產品研發的過程中總結的實踐經驗,希望對於熱愛技術且關注安全領域的受眾有所裨益。本期分享人為雲端衛士安全運營工程師陶濤。
技術背景隨著網際網路飛速發展,基礎網路技術也面臨多需求和挑戰:·網路服務運營商在業務拓展等問題上,提出nfv(網路功能虛擬化)方案。·網際網路資料中心需求更高階的網路處理能力,提出了sdn(軟體定義網路)方案。
在這兩股強大需求的推動下,開源的dpdk(data plane development kit)目前顯得比較熱門,被普遍採用作為硬體抽象的解決方案。功能簡介傳統作業系統,乙個報文的收發,都需要有核心協調。核心身兼多職,每次都找核心協調,效能不好,發揮不出網絡卡的實力。
dpdk是一套開發工具,提**用程式直接處理報文的方法,跳過核心協調部分,效能大大提高。技術構成上圖看似簡單,實際涉及的技術非常多,單拉出任一點討論都可能打不住,所以這裡單說下其使用了哪些技術。使用者態驅動想跳過核心玩硬體,得跟核心打好招呼。目前核心提供了uio驅動和vfio驅動來支援。個人認為,二者的區別在於,uio把硬體裝置對映給使用者態後,核心不會在參與其排程,完全交給使用者自定義使用。
vfio則在對映後,核心仍舊會為其提供部分規範方法的支援(如中斷,iommu等)。大頁記憶體利用大頁記憶體,提高頁表命中率。其另乙個優點,則是記憶體資源隔離,大頁記憶體是不會參與系統swap等排程的。cpu親和性將某個程序/執行緒繫結到特定的cpu上執行。可以降低被系統排程時,上下文切換的效能損耗。
拋開效能優化,也是資源分配等優化的前提條件。cas原子操作dpdk利用原子操作規避執行緒鎖,實現了多消費者,多生產者模式的環形佇列。在多程序/執行緒模式下,dpdk的應用程式有不俗的表現。
技術特點回頭一看,dpdk用的技術並不是獨有的,但合併在一起,構成了它獨有的技術特點。驅動可靠操作物理硬體,可不同於軟體,開發失誤很有可能造成硬體不可用,甚至損壞。dpdk是intel旗下的,適配自己的網絡卡,只能說是沒有比這更可靠的驅動**了。
資源隔離dpdk提供了eal(環境抽象)層,利用上面提到的技術,將eal大部分資源(cpu、記憶體、計時器等),與其他程式(甚至核心)隔離。
為基於dpdk的程式穩定性得到保障。開源,文件全作為開源專案非常適合研究學習,難得的是文件和用例也非常全,學習和使用的成本進一步降低。由於篇幅有限,簡單介紹了dpdk所使用到的關鍵技術,和其作為開發工具的技術特點。以後有機會將結合業務,逐個介紹dpdk的功能模組。
Android實戰 手機衛士
2013 10 25 08 08 閱讀 190 2013 10 23 08 25 閱讀 247 2013 10 22 08 19 閱讀 312 2013 10 21 08 29 閱讀 609 2013 10 20 08 20 閱讀 1890 2013 10 18 08 53 閱讀 259 2013 ...
Android專案實戰 手機衛士開發系列教程
android專案實戰 手機衛士01 啟動介面 android專案實戰 手機衛士02 與伺服器互動 android專案實戰 手機衛士04 自定義 android專案實戰 手機衛士05 自定義對話方塊與撥打 來啟動activity android專案實戰 手機衛士06 gridview的優化與修改bu...
Android專案實戰 手機衛士開發系列教程
儲存到相簿 2 分鐘前 上傳 android專案實戰 手機衛士01 啟動介面 android專案實戰 手機衛士02 與伺服器互動 android專案實戰 手機衛士04 自定義 android專案實戰 手機衛士05 自定義對話方塊與撥打 來啟動activity android專案實戰 手機衛士06 g...