From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 0E4EA8E80 for ; Wed, 30 Sep 2015 16:30:15 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP; 30 Sep 2015 07:29:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,612,1437462000"; d="scan'208";a="780961625" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga001.jf.intel.com with ESMTP; 30 Sep 2015 07:29:51 -0700 Received: from sivswdev01.ir.intel.com (sivswdev01.ir.intel.com [10.237.217.45]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id t8UEToMC003352; Wed, 30 Sep 2015 15:29:50 +0100 Received: from sivswdev01.ir.intel.com (localhost [127.0.0.1]) by sivswdev01.ir.intel.com with ESMTP id t8UETo2L029142; Wed, 30 Sep 2015 15:29:50 +0100 Received: (from ibetts@localhost) by sivswdev01.ir.intel.com with id t8UETo7V029138; Wed, 30 Sep 2015 15:29:50 +0100 From: ibetts To: dev@dpdk.org Date: Wed, 30 Sep 2015 15:29:43 +0100 Message-Id: <1443623388-29104-1-git-send-email-ian.betts@intel.com> X-Mailer: git-send-email 1.7.4.1 Cc: Ian Betts Subject: [dpdk-dev] [PATCH v1 0/5] examples: add performance thread example X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Sep 2015 14:30:18 -0000 From: Ian Betts Performance thread example application This example comprises layer 3 forwarding derivative intended to facilitate characterization of performance with different threading models, specifically:- 1. EAL threads running on different physical cores 2. EAL threads running on the same physical core 3. Lightweight threads running in an EAL thread Purpose and justification Since dpdk 2.0 it has been possible to assign multiple EAL threads to a physical core ( case 2 above ). Currently no example application has focused on demonstrating the performance constraints of differing threading models. Whilst purpose built applications that fully comprehend the DPDK single threaded programming model will always yield superior performance, the desire to preserve ROI in legacy code written for multithreaded operating environments makes lightweight threads ( case 3 above ) worthy of consideration. As well as aiding with legacy code reuse, it is anticipated that lightweight threads will make it possible to scale a multithreaded application with fine granularity allowing an application to more easily take advantage of headroom on EAL cores, or conversely occupy more cores, as dictated by system load. To explore performance with lightweight threads a simple cooperative scheduler subsystem is being included in this example application. If the expected benefits and use cases prove to be of value, it is anticipated that this lightweight thread subsystem would become a library in some future DPDK release. A simple pthread shim in the form of a hello world example is also included. Ian Betts (5): doc: add performance-thread sample application guide examples: add cooperative scheduler subsytem for performance-thread app examples: add l3fwd-thread in performance-thread sample app examples: add pthread-shim in performance-thread sample app config: add build files for performance-thread-app config/common_linuxapp | 6 + config/defconfig_i686-native-linuxapp-gcc | 6 + config/defconfig_i686-native-linuxapp-icc | 6 + config/defconfig_x86_x32-native-linuxapp-gcc | 6 + doc/guides/rel_notes/release_2_2.rst | 6 + doc/guides/sample_app_ug/index.rst | 1 + doc/guides/sample_app_ug/performance_thread.rst | 1221 +++++++ examples/Makefile | 1 + .../performance-thread/common/arch/x86/atomic.h | 60 + examples/performance-thread/common/arch/x86/ctx.c | 66 + examples/performance-thread/common/arch/x86/ctx.h | 57 + examples/performance-thread/common/common.mk | 40 + examples/performance-thread/common/lthread.c | 528 +++ examples/performance-thread/common/lthread.h | 99 + examples/performance-thread/common/lthread_api.h | 822 +++++ examples/performance-thread/common/lthread_cond.c | 228 ++ examples/performance-thread/common/lthread_cond.h | 77 + examples/performance-thread/common/lthread_diag.c | 315 ++ examples/performance-thread/common/lthread_diag.h | 129 + .../performance-thread/common/lthread_diag_api.h | 295 ++ examples/performance-thread/common/lthread_int.h | 212 ++ examples/performance-thread/common/lthread_mutex.c | 244 ++ examples/performance-thread/common/lthread_mutex.h | 52 + .../performance-thread/common/lthread_objcache.h | 160 + examples/performance-thread/common/lthread_pool.h | 338 ++ examples/performance-thread/common/lthread_queue.h | 303 ++ examples/performance-thread/common/lthread_sched.c | 644 ++++ examples/performance-thread/common/lthread_sched.h | 152 + examples/performance-thread/common/lthread_timer.h | 47 + examples/performance-thread/common/lthread_tls.c | 242 ++ examples/performance-thread/common/lthread_tls.h | 64 + examples/performance-thread/l3fwd-thread/Makefile | 57 + examples/performance-thread/l3fwd-thread/main.c | 3355 ++++++++++++++++++++ examples/performance-thread/pthread_shim/Makefile | 61 + examples/performance-thread/pthread_shim/main.c | 287 ++ .../performance-thread/pthread_shim/pthread_shim.c | 717 +++++ .../performance-thread/pthread_shim/pthread_shim.h | 113 + 37 files changed, 11017 insertions(+) create mode 100644 doc/guides/sample_app_ug/performance_thread.rst create mode 100644 examples/performance-thread/common/arch/x86/atomic.h create mode 100644 examples/performance-thread/common/arch/x86/ctx.c create mode 100644 examples/performance-thread/common/arch/x86/ctx.h create mode 100644 examples/performance-thread/common/common.mk create mode 100644 examples/performance-thread/common/lthread.c create mode 100644 examples/performance-thread/common/lthread.h create mode 100644 examples/performance-thread/common/lthread_api.h create mode 100644 examples/performance-thread/common/lthread_cond.c create mode 100644 examples/performance-thread/common/lthread_cond.h create mode 100644 examples/performance-thread/common/lthread_diag.c create mode 100644 examples/performance-thread/common/lthread_diag.h create mode 100644 examples/performance-thread/common/lthread_diag_api.h create mode 100644 examples/performance-thread/common/lthread_int.h create mode 100644 examples/performance-thread/common/lthread_mutex.c create mode 100644 examples/performance-thread/common/lthread_mutex.h create mode 100644 examples/performance-thread/common/lthread_objcache.h create mode 100644 examples/performance-thread/common/lthread_pool.h create mode 100644 examples/performance-thread/common/lthread_queue.h create mode 100644 examples/performance-thread/common/lthread_sched.c create mode 100644 examples/performance-thread/common/lthread_sched.h create mode 100644 examples/performance-thread/common/lthread_timer.h create mode 100644 examples/performance-thread/common/lthread_tls.c create mode 100644 examples/performance-thread/common/lthread_tls.h create mode 100644 examples/performance-thread/l3fwd-thread/Makefile create mode 100644 examples/performance-thread/l3fwd-thread/main.c create mode 100644 examples/performance-thread/pthread_shim/Makefile create mode 100644 examples/performance-thread/pthread_shim/main.c create mode 100644 examples/performance-thread/pthread_shim/pthread_shim.c create mode 100644 examples/performance-thread/pthread_shim/pthread_shim.h -- 1.9.3