> -----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>

Reply via email to