> -----Original Message----- > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Ian Betts > Sent: Friday, December 4, 2015 11:34 > To: dev at dpdk.org > Cc: Betts, Ian > Subject: [dpdk-dev] [PATCH v8 0/4] examples: add performance-thread > > This patchset comprises a 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. > > Changes in this version > * remove ASM implementation of atomic64_xchg in favor > of builtin __sync_lock_test_and_set() > > Ian Betts (4): > doc: add sample application guide for performance-thread > examples: add lthread subsystem forperformance-thread > examples: add l3fwd-thread example in performance-thread > examples: add pthread_shim example to performance thread > > config/defconfig_x86_64-native-linuxapp-gcc | 2 + > config/defconfig_x86_64-native-linuxapp-icc | 2 + > .../sample_app_ug/img/performance_thread_1.svg | 799 +++++ > .../sample_app_ug/img/performance_thread_2.svg | 865 +++++ > doc/guides/sample_app_ug/index.rst | 1 + > doc/guides/sample_app_ug/performance_thread.rst | 1263 +++++++ > examples/Makefile | 1 + > examples/performance-thread/Makefile | 47 + > examples/performance-thread/common/arch/x86/ctx.c | 93 + > examples/performance-thread/common/arch/x86/ctx.h | 57 + > examples/performance-thread/common/common.mk | 42 + > examples/performance-thread/common/lthread.c | 530 +++ > examples/performance-thread/common/lthread.h | 99 + > examples/performance-thread/common/lthread_api.h | 829 +++++ > examples/performance-thread/common/lthread_cond.c | 240 ++ > examples/performance-thread/common/lthread_cond.h | 77 + > examples/performance-thread/common/lthread_diag.c | 321 ++ > examples/performance-thread/common/lthread_diag.h | 129 + > .../performance-thread/common/lthread_diag_api.h | 319 ++ > examples/performance-thread/common/lthread_int.h | 212 ++ > examples/performance-thread/common/lthread_mutex.c | 255 ++ > examples/performance-thread/common/lthread_mutex.h | 52 + > .../performance-thread/common/lthread_objcache.h | 160 + > examples/performance-thread/common/lthread_pool.h | 332 ++ > examples/performance-thread/common/lthread_queue.h | 302 ++ > examples/performance-thread/common/lthread_sched.c | 600 ++++ > examples/performance-thread/common/lthread_sched.h | 152 + > examples/performance-thread/common/lthread_timer.h | 79 + > examples/performance-thread/common/lthread_tls.c | 254 ++ > examples/performance-thread/common/lthread_tls.h | 57 + > examples/performance-thread/l3fwd-thread/Makefile | 57 + > examples/performance-thread/l3fwd-thread/main.c | 3641 > ++++++++++++++++++++ > examples/performance-thread/l3fwd-thread/test.sh | 149 + > examples/performance-thread/pthread_shim/Makefile | 60 + > examples/performance-thread/pthread_shim/main.c | 284 ++ > .../performance-thread/pthread_shim/pthread_shim.c | 714 ++++ > .../performance-thread/pthread_shim/pthread_shim.h | 113 + > 37 files changed, 13189 insertions(+) > create mode 100644 doc/guides/sample_app_ug/img/performance_thread_1.svg > create mode 100644 doc/guides/sample_app_ug/img/performance_thread_2.svg > create mode 100644 doc/guides/sample_app_ug/performance_thread.rst > create mode 100644 examples/performance-thread/Makefile > 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 100755 examples/performance-thread/l3fwd-thread/test.sh > 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 > > -- > 2.1.4
Series Acked-by: Tomasz Kulasek <tomaszx.kulasek at intel.com>