[dpdk-dev] RTE_EAL on single core CPUs

Marc Sune marc.sune at bisdn.de
Mon Apr 7 15:57:56 CEST 2014


Dear Bruce,

Thank you for the quick reply, you are indeed right.

In fact the problem is much more simple than that, now that I realise. 
Our application must have one (or more) threads which do background 
tasks aside from packet processing (one of them is actually controlling 
the I/O), and with multi-core architectures we were sacrifising core0 
for such purpose.

The question now would be how is the appropriate way to treat this 
situation with DPDK;

a) First creating a thread before calling rte_eal_init():

main thread -> pthread_create() I/O thread -> call rte_eal_init() (from 
I/O thread? main thread? irrelevant?) -> ... -> I/O thread calls 
rte_eal_remote_launch() to launch itself

b) Create it after:

main thread -> rte_eal_init() call from main thread -> pthread_create() 
I/O thread  -> ... -> I/O thread calls rte_remote_launch() to launch itself

I guess option a) would be more suitable, is it?

thank you and regards
marc

On 07/04/14 14:55, Richardson, Bruce wrote:
>> -----Original Message-----
>> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Marc Sune
>> Sent: Monday, April 07, 2014 1:51 PM
>> To: <dev at dpdk.org>
>> Subject: [dpdk-dev] RTE_EAL on single core CPUs
>>
>> Dear all,
>>
>> I was preparing a development machine (kvm - qemu) with a single core, and stumbled with
>> what appears to be a limitation with EAL [1].
>> The VM is setup emulating a SandyBridge CPU but with a single CPU and running
>> 1.6.0 branch HEAD (perhaps this is the problem?¿).
>>
>> I was also interested in this particular setup, because we haven't yet tried our application
>> with some Atom equipment we have here, but we need to make it run also there.
>>
>> Any ideas? I am probably missing something really fundamental here.
> Hi Marc,
>
> I think in your case you've hit more a limitation of the particular app, rather than one for the EAL. L2fwd requires more than a single core to run, but you can easily write applications that can handle packets from multiple ports using a single core.
> Where you may hit issues, though, is that you cannot isolate the single core cpu from the linux kernel, so you may need to ensure you have enough buffering throughout the app to avoid packet loss when the kernel interrupts you to do its own house-keeping tasks.
>
> Regards,
> /Bruce
>



More information about the dev mailing list