當年在某公司實習的時候,當時老大給了我乙份dpdk的文件,說是將來很有用,熟悉dpdk對能力提高也有幫助,就試著翻譯了
《intel dpdk getting started guide》和半個《intel dpdk programmers guide》,後來忙著**就沒再搞了。現在,發現
pf_ring的統計虛高了,只好重新擁抱dpdk了。
dpdk的**量還是很龐大的,分析**之前理清庫裡面的各個部分的關係很有必要,下面的一張圖很好的表現了各部分關係。
先介紹dpdk中的幾個縮寫吧:
rte:run-time environment
eal:environment abstraction layer
pmd: poll-mode driver
librte_malloc 庫提供一組api,用於從hugepages建立的memzones中分配記憶體而不是在堆中分配。這有助於改善linux使用者空間環境下典型的從堆中大量分配4kb頁面而容易引起tlb不命中。
記憶體池管理器負責分配的記憶體中的pool物件。乙個pool由名稱標識,並使用乙個ring來儲存空閒物件。它提供了其他一些可選的服務,例如每個core的物件快取和對齊方式幫助器,以確保將填充的物件在所有記憶體通道上均勻分布。
在乙個有限大小的表中,ring結構提供了乙個無鎖的多生產者多消費者的fifo api。相較於無鎖佇列,它有一些的優勢 ;更容易實現,適應於大容量操作和速度更快。乙個ring用在記憶體池管理器(librte_mempool),也可用作cores和(或)在乙個邏輯core之上的連線在一起的執行塊的通用溝通機制。
mbuf 庫提供了建立和銷毀緩衝區,英特爾 ® dpdk 應用程式可能用來儲存訊息緩衝。建立訊息緩衝區在啟動時間和儲存在 mempool,並使用英特爾 ® dpdk mempool 庫。
此庫提供一組 api,用於分配或釋放 mbufs,操縱控制訊息緩衝區(ctrlmbuf) ——普通的訊息緩衝區,還運算元據包緩衝區 (pktmbuf) ——用來進行網路資料報。
timer庫向英特爾 ® dpdk 執行單位提供定時器服務,保證以非同步方式執行函式的能力。它可以是定期呼叫,或只是一次性呼叫。它使用環境抽象層 (eal) 提供的到的 hpet 介面來獲取精確時間的引用,並根據需求在每個核心啟動。
上面的介紹有點抽象,還是直接看**的目錄更具體些。
接下來講講dpdk的特點。
RESTful 架構特點
restful api是目前比較成熟的一套網際網路應用程式的api設計理論。rest 從資源的角度來觀察整個網路,分布在各處的資源由uri確定,而客戶端的應用通過uri來獲取資源的表徵。獲得這些表徵致使這些應用程式轉變了其狀態。隨著不斷獲取資源的表徵,客戶端應用不斷地在轉變著其狀態,所謂表徵狀態轉移...
傳統架構與SOA架構的區別和特點
傳統架構與soa架構的區別和特點 傳統架構 存在問題 1.模組之間耦合度太高,其中乙個公升級其他都得公升級 2.開發困難,各個團隊開發最後都要整合一起 3.系統的擴充套件性差 4.不能靈活的進行分布式部署 soa 分布式系統架構 soa服務體系架構 分布式架構 soa 面向服務的體系結構,是乙個元件...
SequoiaDB架構及特點
1.sequoiadb架構 sequoiadb是乙個新型的分布式資料庫,下圖展示了對sequoiadb系統架構的統一認識。sequoiadb主要包括三個模組,分別為協調節點模組,編目節點模組以及資料節點模組。應用程式都需要與sequoiadb客戶端連線。本地與遠端客戶端都使用tcp ip協議與協調節...