[dpdk-dev] Question on huge pages and running DPDK apps inside containers

Anjali Kulkarni anjali at juniper.net
Thu Jul 3 20:09:25 CEST 2014


Richard, thanks.

Looking at lxc-execute, I see this, which seems to be the key in running
the applications created via lxc-create and those run lxc-execute:
Note
"lxc-execute is intended to run application containers that share the
host's
        root file system, and not to run system containers that you create
using
          lxc-create. Use lxc-start to run system containers."

Anjali




On 7/3/14 9:02 AM, "Richardson, Bruce" <bruce.richardson at intel.com> wrote:

>Can you try deleting the hugepage files on the host before trying to run
>the app in a container?
>
>> -----Original Message-----
>> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Anjali Kulkarni
>> Sent: Thursday, July 03, 2014 7:41 AM
>> To: dev at dpdk.org
>> Subject: [dpdk-dev] Question on huge pages and running DPDK apps inside
>> containers
>> 
>> Hi,
>> 
>> I am encountering a problem running DPDK apps inside containers, and
>>need
>> your help:
>> 
>> I create containers by doing:
>> 
>> lxc-create -t ubuntu -n fpc0
>> lxc-start -n fpc0
>> 
>> (Reserve hugepages and follow all other steps to run the DPDK app on
>>host)
>> 
>> Then run a standard dpdk app, on host, it works fine, inside container,
>>it runs
>> into this problem:
>> 
>> ubuntu at fpc0:/dpdk/x86_64-default-linuxapp-gcc/app$ ./testpmd -c f -n 4
>>-- -i
>> rte_eal_init : 857
>> opt : 99
>> opt : 110
>> EAL: No free hugepages reported in hugepages-2048kB
>> PANIC in rte_eal_init():
>> Cannot get hugepage information
>> 6: [./testpmd() [0x402941]]
>> 5: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)
>>[0x7f7f14f50ec5]]
>> 4: [./testpmd() [0x40237e]]
>> 3: [./testpmd() [0x478edb]]
>> 2: [./testpmd() [0x4022ad]]
>> 1: [./testpmd() [0x47e3c3]]
>> Aborted
>> ubuntu at fpc0:/dpdk/x86_64-default-linuxapp-gcc/app$
>> 
>> However, running this same app on the host, or doing lxc-execute works.
>> 
>> While trying to debug my own dpdk app, I see that reading the same file
>>for no
>> of huge pages (
>> 
>> /sys/kernel/mm/hugepages/hugepages-2048kB/free_hugepages
>> 
>>  ), on the host, its value is read 2048, while inside the container it
>>is 0. This is
>> same file.
>> Also, if you cat the contents of this file, it is actually 0!
>>(nr_hugepages is 2048,
>> but the DPDK code does not read this file.)
>> 
>> cat /sys/kernel/mm/hugepages/hugepages-2048kB/free_hugepages
>> 0
>> 
>> 
>> In the below logs, the 2 prints "EAL: Using .." and "EAL: path ..." are
>>added by me
>> in DPDL eal library.
>> 
>> On host:
>> rte_eal_init : 859
>> opt : 99
>> opt : 110
>> EAL: Using free_hugepages
>> EAL: path /sys/kernel/mm/hugepages/hugepages-2048kB/free_hugepages
>> EAL: No of hugepages is 2048
>> 
>> Inside container:
>> pt : 99
>> opt : 110
>> EAL: Using free_hugepages
>> EAL: path /sys/kernel/mm/hugepages/hugepages-2048kB/free_hugepages
>> EAL: No of hugepages is 0
>> 
>> 
>> Has anyone run into this problem and know what's the issue?
>> 
>> Anjali



More information about the dev mailing list