DPDK 开发者文档 4.Service Cores 翻译

458 阅读2分钟

前言:本文是对DPDK 20.11.0 版本开发者文档 4.Service Cores 章节的翻译。

翻译时间:2021/1/1

原文:doc.dpdk.org/guides/prog…

DPDK版本:20.11.0

正文:

DPDK有一个概念称为service cores的,它允许动态地在DPDK lcore上执行工作。服务内核支持内置在EAL中,并且提供了一个API,以选择性地允许程序控制在运行时如何使用服务内核。

服务内核概念是由服务(需要CPU周期才能运行的DPDK组件)和服务内核(负责运行服务的DPDK lcore)构建而成的。服务内核概念的强大之处在于,可以配置服务内核和服务之间的映射,来消除平台和环境之间的差异。

例如,Eventdev具有硬件和软件PMD。其中,软件PMD需要一个lcore来执行调度操作,而硬件PMD则不需要。使用服务内核,应用程序将不会直接注意到调度是在软件中完成的。

有关服务内核API的详细信息,请参阅文档。

4.1. Service Core Initialization

有两种方法可以在DPDK应用程序中拥有服务内核,一种是使用服务coremask,另一种是使用API动态添加内核。两种方法中比较简单的是将-s coremask参数传递给EAL,它将取主DPDK coremask中所有可用的内核,如果在服务coremask中也设置了比特,那么内核将成为服务内核,而不是DPDK应用程序的lcore。

4.2. Enabling Services on Cores

每个注册的服务可以分别映射到一个服务内核或一组服务内核。在特定内核上启用服务意味着所讨论的lcore将运行该服务。在服务上禁用该内核将阻止所讨论的lcore运行该服务。

通过这种方式,可以为每个服务内核分配特定的工作负载,并将N个工作负载映射到M个服务内核。每个服务lcore都会循环遍历为该内核启用的服务,并调用该函数来运行服务。

4.3. Service Core Statistics

服务内核库能够收集运行时的统计信息,例如对特定服务的调用次数以及该服务使用的周期数。循环计数集合是可动态配置的,允许任何应用程序随时分析系统上运行的服务。