From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marc Sune Subject: Re: RTE_EAL on single core CPUs Date: Mon, 07 Apr 2014 15:57:56 +0200 Message-ID: <5342AEE4.6090904@bisdn.de> References: <53429F2F.7050602@bisdn.de> <59AF69C657FD0841A61C55336867B5B01A9F91D0@IRSMSX103.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Cc: "" To: "Richardson, Bruce" Return-path: In-Reply-To: <59AF69C657FD0841A61C55336867B5B01A9F91D0-kPTMFJFq+rELt2AQoY/u9bfspsVTdybXVpNB7YpNyf8@public.gmane.org> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" 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.=20 Our application must have one (or more) threads which do background=20 tasks aside from packet processing (one of them is actually controlling=20 the I/O), and with multi-core architectures we were sacrifising core0=20 for such purpose. The question now would be how is the appropriate way to treat this=20 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=20 I/O thread? main thread? irrelevant?) -> ... -> I/O thread calls=20 rte_eal_remote_launch() to launch itself b) Create it after: main thread -> rte_eal_init() call from main thread -> pthread_create()=20 I/O thread -> ... -> I/O thread calls rte_remote_launch() to launch itse= lf 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-VfR2kkLFssw@public.gmane.org] On Behalf Of Marc Sune >> Sent: Monday, April 07, 2014 1:51 PM >> To: >> 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?=BF). >> >> 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 m= ultiple 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 enoug= h buffering throughout the app to avoid packet loss when the kernel inter= rupts you to do its own house-keeping tasks. > > Regards, > /Bruce >