[dpdk-dev] [PATCH v3 0/5] fix control thread affinities

Olivier Matz olivier.matz at 6wind.com
Tue Apr 24 16:46:46 CEST 2018


Some parts of dpdk use their own management threads. Most of the time,
the affinity of the thread is not properly set: it should not be scheduled
on the dataplane cores, because interrupting them can cause packet losses.

This patchset introduces a new wrapper for thread creation that does
the job automatically, avoiding code duplication.

v3:
* new patch: use this API in examples when relevant.
* replace pthread_kill by pthread_cancel. Note that pthread_join()
  is still needed.
* rebase: vfio and pdump do not have control pthreads anymore, and eal
  has 2 new pthreads
* remove all calls to snprintf/strlcpy that truncate the thread name:
  all strings lengths are already < 16.

v2:
* set affinity to master core if no core is off, as suggested by
  Anatoly

Olivier Matz (5):
  eal: use sizeof to avoid a double use of a define
  eal: new function to create control threads
  eal: set name when creating a control thread
  eal: set affinity for control threads
  examples: use new API to create control threads

 drivers/net/kni/Makefile                     |  1 +
 drivers/net/kni/rte_eth_kni.c                |  3 +-
 examples/tep_termination/main.c              | 16 +++----
 examples/vhost/main.c                        | 19 +++-----
 lib/librte_eal/bsdapp/eal/eal.c              |  4 +-
 lib/librte_eal/bsdapp/eal/eal_thread.c       |  2 +-
 lib/librte_eal/common/eal_common_proc.c      | 15 ++----
 lib/librte_eal/common/eal_common_thread.c    | 72 ++++++++++++++++++++++++++++
 lib/librte_eal/common/include/rte_lcore.h    | 26 ++++++++++
 lib/librte_eal/linuxapp/eal/eal.c            |  4 +-
 lib/librte_eal/linuxapp/eal/eal_interrupts.c | 17 ++-----
 lib/librte_eal/linuxapp/eal/eal_thread.c     |  2 +-
 lib/librte_eal/linuxapp/eal/eal_timer.c      | 12 +----
 lib/librte_eal/rte_eal_version.map           |  1 +
 lib/librte_vhost/socket.c                    | 25 ++--------
 15 files changed, 135 insertions(+), 84 deletions(-)

-- 
2.11.0



More information about the dev mailing list