[dpdk-users] Is DPDK compatible with C++11 threads?

2016-11-10 Thread Pavey, Nicholas
Yes, agreed. We only use the STL in general purpose code, not the DPDK fast 
path.

Nick

From: Anupam Kapoor <anupam.kap...@gmail.com>
Date: Wednesday, November 9, 2016 at 11:14 PM
To: "Wiles, Keith" 
Cc: David Aldrich , "Pavey, Nicholas" , "users at dpdk.org" 
Subject: Re: [dpdk-users] Is DPDK compatible with C++11 threads?


On Thu, Nov 10, 2016 at 2:30 AM, Wiles, Keith mailto:keith.wiles at intel.com>> wrote:
Also look at one of the DPDK examples as it uses a lthread on top of pthreads 
and it may give you some ideas as to how multiple threads can work. I am trying 
to remember which example and my dev machine is down at this time, but just 
search for lthread.

?this one: 
?http://dpdk.org/doc/guides/sample_app_ug/performance_thread.html<https://urldefense.proofpoint.com/v2/url?u=http-3A__dpdk.org_doc_guides_sample-5Fapp-5Fug_performance-5Fthread.html=DgMFaQ=96ZbZZcaMF4w0F4jpN6LZg=ssgET6RyiWLuSGT5U4X0s-CtLYP5dr-AKGa5XH84zdM=7hZrbWDcflak8oiYezM8ikKmkjXi6bqa-uc-Tj8hzsE=Q6FKkqcR_EKo71KN5FKQYQEJGU--5ZdNjkqs5hLKk34=>

one more thing that you probably need to watch out for would be libc 
interactions within your C++11 application e.g. usage of stl containers might 
exact a severe performance penalty...

--
kind regards
anupam


In the beginning was the lambda, and the lambda was with Emacs, and Emacs was 
the lambda.


[dpdk-users] Is DPDK compatible with C++11 threads?

2016-11-10 Thread Anupam Kapoor
On Thu, Nov 10, 2016 at 2:30 AM, Wiles, Keith  wrote:

> Also look at one of the DPDK examples as it uses a lthread on top of
> pthreads and it may give you some ideas as to how multiple threads can
> work. I am trying to remember which example and my dev machine is down at
> this time, but just search for lthread.


?this one: ?http://dpdk.org/doc/guides/sample_app_ug/performance_thread.html

one more thing that you probably need to watch out for would be libc
interactions within your C++11 application e.g. usage of stl containers
might exact a severe performance penalty...

--
kind regards
anupam


In the beginning was the lambda, and the lambda was with Emacs, and Emacs
was the lambda.


[dpdk-users] Is DPDK compatible with C++11 threads?

2016-11-09 Thread Wiles, Keith

> On Nov 9, 2016, at 2:40 AM, David Aldrich  
> wrote:
> 
> Hi Nick and Keith
>  
> Thank you both for your replies, they were very helpful.
>  
> Referring again to the helloworld example, we see that multiple threads are 
> launched:
>  
>  RTE_LCORE_FOREACH_SLAVE(lcore_id)
>  {
> rte_eal_remote_launch(lcore_hello, NULL, lcore_id);
>  }
>  
> In our case, where our application is running C++11 threads, would I launch 
> one dpdk thread for the dpdk process and launch my other threads as C++11 
> threads as before?
>  
> One of those C++11 threads will process my network data.  Will the dpdk?s 
> locks and shared memory mechanisms allow this?

Each of the lcores will get one pthread and that pthread expects to be the main 
one for data polling, but it does not need to be. I assume you can use the 
launch command in DPDK and then your C++11 application can create its own 
threads. The spinlocks in DPDK should work without any issues as long as you 
use the same locks everywhere.

I have before launched a pthread to a given core using the DPDK APIs then 
created more pthreads on that same core for other purposes. Remember the 
standard way DPDK works is the pthread launched expects to poll the port(s) and 
never stop from your application. This means you would need to yield() the main 
polling loop to allow the other threads to run unless you are using priority 
and some type of interrupt or signal.

Also look at one of the DPDK examples as it uses a lthread on top of pthreads 
and it may give you some ideas as to how multiple threads can work. I am trying 
to remember which example and my dev machine is down at this time, but just 
search for lthread.

>  
> I realise that I am demonstrating a lack of understanding of the basics of 
> how dpdk works, but I am just starting to understand it.
>  
> With best regards
>  
> David
>  
> From: Pavey, Nicholas [mailto:npavey at akamai.com] 
> Sent: 08 November 2016 17:23
> To: Wiles, Keith ; David Aldrich  EMEA.NEC.COM>
> Cc: users at dpdk.org
> Subject: Re: [dpdk-users] Is DPDK compatible with C++11 threads?
>  
> I?ve built the DPDK along with code in both C and C++. It works fine as long 
> as you get the linkage between the languages correct and make sure that you 
> don?t pass C++ headers into files compiled with the C compiler.
>  
> I did try building the DPDK itself with the ?g++? compiler (v4.8.4, Ubuntu 
> 14.04, 64bit), and I wasn?t able to get that working out of the box. I got 
> hundreds of warnings, but I didn?t take the time to debug it ? it?s possible 
> that a few point fixes in the build system / DPDK code might yield a clean 
> compile.
>  
> Thanks,
>  
>  
> Nick
>  
> From: "Wiles, Keith" 
> Date: Tuesday, November 8, 2016 at 12:04 PM
> To: David Aldrich 
> Cc: "users at dpdk.org" 
> Subject: Re: [dpdk-users] Is DPDK compatible with C++11 threads?
>  
>  
> On Nov 8, 2016, at 5:12 AM, David Aldrich  
> wrote:
> Hi
> As a beginner with DPDK, I want to consider how we can convert an existing 
> Linux application from using the kernel network stack to using DPDK.
> This existing app is multi-threaded, using the C++11 thread, mutex etc. 
> classes.  We assign threads to cores by calling pthread_setaffinity_np().
> I have looked at the DPDK helloworld application and see that it launches 
> threads using the DPDK API:
>/* call lcore_hello() on every slave lcore */
>RTE_LCORE_FOREACH_SLAVE(lcore_id) {
>   rte_eal_remote_launch(lcore_hello, NULL, 
> lcore_id);
>}
> If we use DPDK, can we retain our existing C++11 threads or are we obliged to 
> use the DPDK threading APIs exclusively?
>  
> You should be able to use the standard C++11 threads I believe, in DPDK we 
> are just using pthreads and set affinity to lock a thread to a core. You can 
> still use pthreads in your application.
>  
> Perhaps a more basic question is applicable: is DPDK compatible with C++?
>  
> I believe building DPDK with C++ code does work,  but I have not tried it 
> myself.
>  
> Best regards
> David
> Best regards
> David
>  
> Regards,
> Keith
>  
>  
>  
> 
> Click here to report this email as spam.
> 

Regards,
Keith



[dpdk-users] Is DPDK compatible with C++11 threads?

2016-11-08 Thread Pavey, Nicholas
I?ve built the DPDK along with code in both C and C++. It works fine as long as 
you get the linkage between the languages correct and make sure that you don?t 
pass C++ headers into files compiled with the C compiler.

I did try building the DPDK itself with the ?g++? compiler (v4.8.4, Ubuntu 
14.04, 64bit), and I wasn?t able to get that working out of the box. I got 
hundreds of warnings, but I didn?t take the time to debug it ? it?s possible 
that a few point fixes in the build system / DPDK code might yield a clean 
compile.

Thanks,


Nick

From: "Wiles, Keith" <keith.wi...@intel.com>
Date: Tuesday, November 8, 2016 at 12:04 PM
To: David Aldrich 
Cc: "users at dpdk.org" 
Subject: Re: [dpdk-users] Is DPDK compatible with C++11 threads?


On Nov 8, 2016, at 5:12 AM, David Aldrich mailto:David.Aldrich at EMEA.NEC.COM>> wrote:
Hi
As a beginner with DPDK, I want to consider how we can convert an existing 
Linux application from using the kernel network stack to using DPDK.
This existing app is multi-threaded, using the C++11 thread, mutex etc. 
classes.  We assign threads to cores by calling pthread_setaffinity_np().
I have looked at the DPDK helloworld application and see that it launches 
threads using the DPDK API:
   /* call lcore_hello() on every slave lcore */
   RTE_LCORE_FOREACH_SLAVE(lcore_id) {
  rte_eal_remote_launch(lcore_hello, NULL, 
lcore_id);
   }
If we use DPDK, can we retain our existing C++11 threads or are we obliged to 
use the DPDK threading APIs exclusively?

You should be able to use the standard C++11 threads I believe, in DPDK we are 
just using pthreads and set affinity to lock a thread to a core. You can still 
use pthreads in your application.

Perhaps a more basic question is applicable: is DPDK compatible with C++?

I believe building DPDK with C++ code does work,  but I have not tried it 
myself.

Best regards
David
Best regards
David

Regards,
Keith




[dpdk-users] Is DPDK compatible with C++11 threads?

2016-11-08 Thread Wiles, Keith

> On Nov 8, 2016, at 5:12 AM, David Aldrich  
> wrote:
> 
> Hi
> 
> As a beginner with DPDK, I want to consider how we can convert an existing 
> Linux application from using the kernel network stack to using DPDK.
> 
> This existing app is multi-threaded, using the C++11 thread, mutex etc. 
> classes.  We assign threads to cores by calling pthread_setaffinity_np().
> 
> I have looked at the DPDK helloworld application and see that it launches 
> threads using the DPDK API:
> 
>   /* call lcore_hello() on every slave lcore */
>   RTE_LCORE_FOREACH_SLAVE(lcore_id) {
>  rte_eal_remote_launch(lcore_hello, NULL, 
> lcore_id);
>   }
> 
> If we use DPDK, can we retain our existing C++11 threads or are we obliged to 
> use the DPDK threading APIs exclusively?

You should be able to use the standard C++11 threads I believe, in DPDK we are 
just using pthreads and set affinity to lock a thread to a core. You can still 
use pthreads in your application.

> 
> Perhaps a more basic question is applicable: is DPDK compatible with C++?

I believe building DPDK with C++ code does work,  but I have not tried it 
myself.

> 
> Best regards
> 
> David
> 
> 
> 
> Best regards
> 
> David
> 

Regards,
Keith