From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id A9402235 for ; Thu, 29 Jun 2017 13:23:44 +0200 (CEST) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga104.jf.intel.com with ESMTP; 29 Jun 2017 04:23:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,280,1496127600"; d="scan'208";a="120290584" Received: from silpixa00398672.ir.intel.com ([10.237.223.128]) by fmsmga005.fm.intel.com with ESMTP; 29 Jun 2017 04:23:42 -0700 From: Harry van Haaren To: dev@dpdk.org Cc: jerin.jacob@caviumnetworks.com, thomas@monjalon.net, keith.wiles@intel.com, bruce.richardson@intel.com, Harry van Haaren Date: Thu, 29 Jun 2017 12:23:36 +0100 Message-Id: <1498735421-100164-1-git-send-email-harry.van.haaren@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1498208779-166205-1-git-send-email-harry.van.haaren@intel.com> References: <1498208779-166205-1-git-send-email-harry.van.haaren@intel.com> Subject: [dpdk-dev] [PATCH v2 0/5] service cores: cover letter X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Jun 2017 11:23:45 -0000 This patchset introduces service cores to DPDK. A service core is an lcore that performs functions to abstract away details of differences in environment of the application. An example is using the eventdev API, where either a software or hardware PMD performs scheduling. In the case of the software PMD an lcore is required to perform scheduling, which means application logic would have to be aware of the PMD running under the API. To abstract away the differences in HW / SW PMDs, service cores can run the SW PMD service without application logic specifying the exact cores to use. Note that eventdev is only one API that benefits; timers, interrupts handling, statistics and monitoring, and a range of other infrastructure that requires a slice of CPU time may all benefit from service cores. The application is not obliged to manually use the service cores API, however if an application wishes to use the service cores API for fine grained control over how the services are run, this is possible. Deciding between a performance threading-profile and scaled-down profile can be achieved by advanced usage of service cores and setting the lcore mappings. Finally, the last patch introduces how a PMD can register a service to run a function. This is then available (along with any other registered services) to be run by the service cores. In hope that this makes DPDK and its core-static way-of-life a bit more dynamic when running dynamic workloads! :) Regards, -Harry Harry van Haaren (5): service cores: header and implementation service cores: EAL init changes service cores: coremask parsing service cores: add unit tests service cores: enable event/sw with service doc/api/doxy-api-index.md | 1 + drivers/event/sw/sw_evdev.c | 32 + drivers/event/sw/sw_evdev.h | 3 + lib/librte_eal/bsdapp/eal/Makefile | 1 + lib/librte_eal/bsdapp/eal/eal.c | 22 + lib/librte_eal/bsdapp/eal/rte_eal_version.map | 28 + lib/librte_eal/common/Makefile | 1 + lib/librte_eal/common/eal_common_lcore.c | 1 + lib/librte_eal/common/eal_common_options.c | 77 +++ lib/librte_eal/common/include/rte_eal.h | 4 + lib/librte_eal/common/include/rte_lcore.h | 3 +- lib/librte_eal/common/include/rte_service.h | 298 +++++++++ .../common/include/rte_service_private.h | 118 ++++ lib/librte_eal/common/rte_service.c | 671 +++++++++++++++++++++ lib/librte_eal/linuxapp/eal/Makefile | 1 + lib/librte_eal/linuxapp/eal/eal.c | 23 + lib/librte_eal/linuxapp/eal/eal_thread.c | 9 +- lib/librte_eal/linuxapp/eal/rte_eal_version.map | 29 + test/test/Makefile | 2 + test/test/test_service_cores.c | 496 +++++++++++++++ 20 files changed, 1818 insertions(+), 2 deletions(-) create mode 100644 lib/librte_eal/common/include/rte_service.h create mode 100644 lib/librte_eal/common/include/rte_service_private.h create mode 100644 lib/librte_eal/common/rte_service.c create mode 100644 test/test/test_service_cores.c -- 2.7.4