From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from proxy.6wind.com (host.76.145.23.62.rev.coltfrance.com [62.23.145.76]) by dpdk.org (Postfix) with ESMTP id 6BF3737A0 for ; Tue, 24 Apr 2018 16:47:13 +0200 (CEST) Received: from glumotte.dev.6wind.com. (unknown [10.16.0.195]) by proxy.6wind.com (Postfix) with ESMTP id 5DF45168A4F; Tue, 24 Apr 2018 16:45:08 +0200 (CEST) From: Olivier Matz To: dev@dpdk.org Cc: Anatoly Burakov Date: Tue, 24 Apr 2018 16:46:46 +0200 Message-Id: <20180424144651.13145-1-olivier.matz@6wind.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180403130439.11151-1-olivier.matz@6wind.com> References: <20180403130439.11151-1-olivier.matz@6wind.com> Subject: [dpdk-dev] [PATCH v3 0/5] fix control thread affinities 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: Tue, 24 Apr 2018 14:47:13 -0000 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