DPDK編程指南-4(服務核)

4. 服務核

DPDK有一個稱爲服務核的概念,它可以動態地在DPDK邏輯核(lcore)上執行工作。 服務核的支持內置於EAL中,並提供API可選擇地允許應用程序控制服務核在運行時的使用方式。

服務核概念是由服務(DPDK的組件,需要CPU週期來運行)和服務核(DPDK 邏輯核,負責運行服務)構建的。服務核概念的強大之處在於服務核和服務之間的映射可以配置爲抽象化平臺和環境之間的差異。

例如,Eventdev具有硬件和軟件PMD。 其中,軟件PMD需要lcore來執行調度操作,而硬件PMD則不需要。 對於服務核,應用程序不會直接注意到調度是在軟件中完成的。

詳細信息請參考服務核API的文檔。

4.1. 服務核初始化

在DPDK應用程序中有兩種方法可以使用服務核,使用服務核掩碼,或者使用API動態添加cores。 兩者中較簡單的方法是將-s coremask參數傳遞給EAL,它將使用主DPDK核掩碼中的任何cores,如果這些位也在服務核掩碼中設置,則這些cores將成爲服務核而不是DPDK應用程序cores。

4.2. 在Cores上使能服務

每個已註冊的服務可以單獨映射到一個服務核,或一組服務核上。在特定core上啓用服務意味着lcore將運行該服務。 禁用該core的服務也會阻止lcore運行該服務。

使用此方法,可以將特定工作負載分配給每個服務核,並將N個工作負載映射到M個服務核。 每個服務lcore循環遍歷該core上啓用的服務,並調用函數來運行該服務。

!注意:lcore可以理解爲DPDK中的一個任務線程

4.3. 服務核統計

服務核庫能夠收集運行時統計信息,例如對特定服務的調用次數以及服務使用的週期數。 循環計數集合是動態可配置的,允許任何應用程序隨時分析系統上運行的服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章