From patchwork Wed Nov 5 00:17:22 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Sune X-Patchwork-Id: 1126 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id A06A25944; Wed, 5 Nov 2014 01:08:17 +0100 (CET) Received: from mx.bisdn.de (mx.bisdn.de [185.27.182.31]) by dpdk.org (Postfix) with ESMTP id 145AC2E89 for ; Wed, 5 Nov 2014 01:08:13 +0100 (CET) Received: from localhost.localdomain (unknown [172.16.251.36]) by mx.bisdn.de (Postfix) with ESMTP id 3FB40A2D77; Wed, 5 Nov 2014 01:17:32 +0100 (CET) From: Marc Sune To: dev@dpdk.org Date: Wed, 5 Nov 2014 01:17:22 +0100 Message-Id: <1415146642-24717-1-git-send-email-marc.sune@bisdn.de> X-Mailer: git-send-email 1.7.10.4 Subject: [dpdk-dev] [RFC PATCH] Adding RTE_KNI_PREEMPT configuration option 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch introduces CONFIG_RTE_KNI_PREEMPT flag. When set to 'no', KNI kernel thread(s) do not call schedule_timeout_interruptible(), which improves overall KNI performance at the expense of CPU cycles (polling). Default values is 'yes', maintaining the same behaviour as of now. Note: this RFC patch is based on v1.7.1, since I was using a 1.7 application. It will eventually be rebased to 1.8 upon acceptance. Signed-off-by: Marc Sune --- config/common_linuxapp | 1 + lib/librte_eal/linuxapp/kni/kni_misc.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/config/common_linuxapp b/config/common_linuxapp index 9047975..9cebcf1 100644 --- a/config/common_linuxapp +++ b/config/common_linuxapp @@ -382,6 +382,7 @@ CONFIG_RTE_LIBRTE_PIPELINE=y # Compile librte_kni # CONFIG_RTE_LIBRTE_KNI=y +CONFIG_RTE_KNI_PREEMPT=y CONFIG_RTE_KNI_KO_DEBUG=n CONFIG_RTE_KNI_VHOST=n CONFIG_RTE_KNI_VHOST_MAX_CACHE_SIZE=1024 diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c b/lib/librte_eal/linuxapp/kni/kni_misc.c index ba77776..e7e6c27 100644 --- a/lib/librte_eal/linuxapp/kni/kni_misc.c +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c @@ -229,9 +229,11 @@ kni_thread_single(void *unused) } } up_read(&kni_list_lock); +#ifdef RTE_KNI_PREEMPT /* reschedule out for a while */ schedule_timeout_interruptible(usecs_to_jiffies( \ KNI_KTHREAD_RESCHEDULE_INTERVAL)); +#endif } return 0; @@ -252,8 +254,10 @@ kni_thread_multiple(void *param) #endif kni_net_poll_resp(dev); } +#ifdef RTE_KNI_PREEMPT schedule_timeout_interruptible(usecs_to_jiffies( \ KNI_KTHREAD_RESCHEDULE_INTERVAL)); +#endif } return 0;