DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [RFC PATCH] Adding RTE_KNI_PREEMPT configuration option
@ 2014-11-05  0:17 Marc Sune
  2014-11-06 18:20 ` Marc Sune
  0 siblings, 1 reply; 5+ messages in thread
From: Marc Sune @ 2014-11-05  0:17 UTC (permalink / raw)
  To: 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 <marc.sune@bisdn.de>
---
 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;
-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [dpdk-dev] [RFC PATCH] Adding RTE_KNI_PREEMPT configuration option
  2014-11-05  0:17 [dpdk-dev] [RFC PATCH] Adding RTE_KNI_PREEMPT configuration option Marc Sune
@ 2014-11-06 18:20 ` Marc Sune
  2014-11-06 19:39   ` [dpdk-dev] Cannot run l3fwd Eduard Gibert Renart
  0 siblings, 1 reply; 5+ messages in thread
From: Marc Sune @ 2014-11-06 18:20 UTC (permalink / raw)
  To: <dev@dpdk.org>

Hi guys,

Any comment, suggestion or objection to this patch? Otherwise I would 
send a non-RFC patch

Thanks
Marc

On 05/11/14 01:17, Marc Sune wrote:
> 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 <marc.sune@bisdn.de>
> ---
>   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;

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [dpdk-dev] Cannot run l3fwd
  2014-11-06 18:20 ` Marc Sune
@ 2014-11-06 19:39   ` Eduard Gibert Renart
  2014-11-06 20:57     ` Thomas Monjalon
  2014-11-06 23:44     ` Ananyev, Konstantin
  0 siblings, 2 replies; 5+ messages in thread
From: Eduard Gibert Renart @ 2014-11-06 19:39 UTC (permalink / raw)
  To: <dev@dpdk.org>

Hi Everyone:

When I try to run l3fwd inside my VM I get the following error:

ubuntu@ubuntu-VirtualBox:~/Desktop/dpdk-1.7.1/examples/l3fwd/build$ sudo ./l3fwd -c 0x3 -n 2 -- -p 0x3 --config="(0,0,0),(1,0,1)"
EAL: Cannot read numa node link for lcore 0 - using physical package id instead
EAL: Detected lcore 0 as core 0 on socket 0
EAL: Cannot read numa node link for lcore 1 - using physical package id instead
EAL: Detected lcore 1 as core 1 on socket 0
EAL: Support maximum 64 logical core(s) by configuration.
EAL: Detected 2 lcore(s)
EAL: Setting up memory...
EAL: cannot open /proc/self/numa_maps, consider that all memory is in socket_id 0
EAL: Ask a virtual area of 0x400000 bytes
EAL: Virtual area found at 0xb6400000 (size = 0x400000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0xb6000000 (size = 0x200000)
EAL: Ask a virtual area of 0xf000000 bytes
EAL: Virtual area found at 0xa6e00000 (size = 0xf000000)
EAL: Ask a virtual area of 0x1e200000 bytes
EAL: Virtual area found at 0x88a00000 (size = 0x1e200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x88600000 (size = 0x200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x88200000 (size = 0x200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x87e00000 (size = 0x200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x87a00000 (size = 0x200000)
EAL: Ask a virtual area of 0xe400000 bytes
EAL: Virtual area found at 0x79400000 (size = 0xe400000)
EAL: Ask a virtual area of 0x2200000 bytes
EAL: Virtual area found at 0x77000000 (size = 0x2200000)
EAL: Ask a virtual area of 0xc00000 bytes
EAL: Virtual area found at 0x76200000 (size = 0xc00000)
EAL: Ask a virtual area of 0xe00000 bytes
EAL: Virtual area found at 0x75200000 (size = 0xe00000)
EAL: Requesting 512 pages of size 2MB from socket 0
EAL: TSC frequency is ~2503668 KHz
EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using unreliable clock cycles !
EAL: Master core 0 is ready (tid=b75c2800)
EAL: Core 1 is ready (tid=751ffb40)
EAL: PCI device 0000:00:03.0 on NUMA socket -1
EAL:   probe driver: 8086:100e rte_em_pmd
EAL:   0000:00:03.0 not managed by UIO driver, skipping
EAL: PCI device 0000:00:08.0 on NUMA socket -1
EAL:   probe driver: 8086:100e rte_em_pmd
EAL:   PCI memory mapped at 0xb7572000
EAL: PCI device 0000:00:09.0 on NUMA socket -1
EAL:   probe driver: 8086:100e rte_em_pmd
EAL:   PCI memory mapped at 0xb7552000
EAL: PCI device 0000:00:03.0 on NUMA socket -1
EAL:   probe driver: 8086:100e rte_em_pmd
EAL:   0000:00:03.0 not managed by UIO driver, skipping
Initializing port 0 ... Creating queues: nb_rxq=1 nb_txq=2... EAL: Error - exiting with code: 1
  Cause: Cannot configure device: err=-22, port=0

Any ideas on what is causing the error? 

Thanks,
Eduard Gibert Renart

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [dpdk-dev] Cannot run l3fwd
  2014-11-06 19:39   ` [dpdk-dev] Cannot run l3fwd Eduard Gibert Renart
@ 2014-11-06 20:57     ` Thomas Monjalon
  2014-11-06 23:44     ` Ananyev, Konstantin
  1 sibling, 0 replies; 5+ messages in thread
From: Thomas Monjalon @ 2014-11-06 20:57 UTC (permalink / raw)
  To: Eduard Gibert Renart; +Cc: dev

Hi,
You replied to an email which is absolutely not related to your question,
polluting the thread.
Don't take me wrong: I don't want you to re-post your question in a new thread.
You have the source code of DPDK and you didn't check where the error is,
not enabled the debug logs. So, it's clearly too early to post in this
mailing-list.

2014-11-06 14:39, Eduard Gibert Renart:
> Initializing port 0 ... Creating queues: nb_rxq=1 nb_txq=2... EAL: Error - exiting with code: 1
>   Cause: Cannot configure device: err=-22, port=0

Maybe you didn't find the debug options. Please check in config files and rebuild.

-- 
Thomas

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [dpdk-dev] Cannot run l3fwd
  2014-11-06 19:39   ` [dpdk-dev] Cannot run l3fwd Eduard Gibert Renart
  2014-11-06 20:57     ` Thomas Monjalon
@ 2014-11-06 23:44     ` Ananyev, Konstantin
  1 sibling, 0 replies; 5+ messages in thread
From: Ananyev, Konstantin @ 2014-11-06 23:44 UTC (permalink / raw)
  To: Eduard Gibert Renart, <dev@dpdk.org>



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Eduard Gibert Renart
> Sent: Thursday, November 06, 2014 7:40 PM
> To: <dev@dpdk.org>
> Subject: [dpdk-dev] Cannot run l3fwd
> 
> Hi Everyone:
> 
> When I try to run l3fwd inside my VM I get the following error:
> 
> ubuntu@ubuntu-VirtualBox:~/Desktop/dpdk-1.7.1/examples/l3fwd/build$ sudo ./l3fwd -c 0x3 -n 2 -- -p 0x3 --config="(0,0,0),(1,0,1)"
> EAL: Cannot read numa node link for lcore 0 - using physical package id instead
> EAL: Detected lcore 0 as core 0 on socket 0
> EAL: Cannot read numa node link for lcore 1 - using physical package id instead
> EAL: Detected lcore 1 as core 1 on socket 0
> EAL: Support maximum 64 logical core(s) by configuration.
> EAL: Detected 2 lcore(s)
> EAL: Setting up memory...
> EAL: cannot open /proc/self/numa_maps, consider that all memory is in socket_id 0
> EAL: Ask a virtual area of 0x400000 bytes
> EAL: Virtual area found at 0xb6400000 (size = 0x400000)
> EAL: Ask a virtual area of 0x200000 bytes
> EAL: Virtual area found at 0xb6000000 (size = 0x200000)
> EAL: Ask a virtual area of 0xf000000 bytes
> EAL: Virtual area found at 0xa6e00000 (size = 0xf000000)
> EAL: Ask a virtual area of 0x1e200000 bytes
> EAL: Virtual area found at 0x88a00000 (size = 0x1e200000)
> EAL: Ask a virtual area of 0x200000 bytes
> EAL: Virtual area found at 0x88600000 (size = 0x200000)
> EAL: Ask a virtual area of 0x200000 bytes
> EAL: Virtual area found at 0x88200000 (size = 0x200000)
> EAL: Ask a virtual area of 0x200000 bytes
> EAL: Virtual area found at 0x87e00000 (size = 0x200000)
> EAL: Ask a virtual area of 0x200000 bytes
> EAL: Virtual area found at 0x87a00000 (size = 0x200000)
> EAL: Ask a virtual area of 0xe400000 bytes
> EAL: Virtual area found at 0x79400000 (size = 0xe400000)
> EAL: Ask a virtual area of 0x2200000 bytes
> EAL: Virtual area found at 0x77000000 (size = 0x2200000)
> EAL: Ask a virtual area of 0xc00000 bytes
> EAL: Virtual area found at 0x76200000 (size = 0xc00000)
> EAL: Ask a virtual area of 0xe00000 bytes
> EAL: Virtual area found at 0x75200000 (size = 0xe00000)
> EAL: Requesting 512 pages of size 2MB from socket 0
> EAL: TSC frequency is ~2503668 KHz
> EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using unreliable clock cycles !
> EAL: Master core 0 is ready (tid=b75c2800)
> EAL: Core 1 is ready (tid=751ffb40)
> EAL: PCI device 0000:00:03.0 on NUMA socket -1
> EAL:   probe driver: 8086:100e rte_em_pmd
> EAL:   0000:00:03.0 not managed by UIO driver, skipping
> EAL: PCI device 0000:00:08.0 on NUMA socket -1
> EAL:   probe driver: 8086:100e rte_em_pmd
> EAL:   PCI memory mapped at 0xb7572000
> EAL: PCI device 0000:00:09.0 on NUMA socket -1
> EAL:   probe driver: 8086:100e rte_em_pmd
> EAL:   PCI memory mapped at 0xb7552000
> EAL: PCI device 0000:00:03.0 on NUMA socket -1
> EAL:   probe driver: 8086:100e rte_em_pmd
> EAL:   0000:00:03.0 not managed by UIO driver, skipping
> Initializing port 0 ... Creating queues: nb_rxq=1 nb_txq=2... EAL: Error - exiting with code: 1
>   Cause: Cannot configure device: err=-22, port=0
> 
> Any ideas on what is causing the error?

As I can see from your log:
You are using emulated e1000 device.
Only 1 RX and 1 TX queue per NIC are supported for that type of device.
>From other side l3fwd uses a separate TX queue per NIC for each logical core.
In your case - 2 lcores, so 2 TX queues for each device are requested. 
Try to start with just one lcore ('-c 1' or '-c 2') - I think that should help.

Konstantin  

> 
> Thanks,
> Eduard Gibert Renart

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-11-06 23:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-05  0:17 [dpdk-dev] [RFC PATCH] Adding RTE_KNI_PREEMPT configuration option Marc Sune
2014-11-06 18:20 ` Marc Sune
2014-11-06 19:39   ` [dpdk-dev] Cannot run l3fwd Eduard Gibert Renart
2014-11-06 20:57     ` Thomas Monjalon
2014-11-06 23:44     ` Ananyev, Konstantin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).