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

Shaw, Jeffrey B jeffrey.b.shaw at intel.com
Thu Jul 3 16:53:58 CEST 2014


Do you know if the host's hugepages are mapped into the container?
Seeing as containers are meant to provide isolation, it seems to make sense that the host would not automatically share hugepages with a container, but I'm not sure.

Jeff

-----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