Hi Abdul,
On 2019/12/06 20:12, Halim, Abdul wrote:
-----Original Message-----
From: Yasufumi Ogawa <yasufu...@gmail.com>
Sent: Thursday, December 5, 2019 7:52 PM
To: Ruifeng Wang (Arm Technology China) <ruifeng.w...@arm.com>;
Halim, Abdul <abdul.ha...@intel.com>; dev@dpdk.org
Cc: Kinsella, Ray <ray.kinse...@intel.com>; nd <n...@arm.com>
Subject: Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker
image
[...]
Hi Abdul,
I tried the steps on AArch64 platform, and hit error as below:
$ sudo docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp .
Sending build context to Docker daemon 2.55GB
Step 1/4 : FROM dpdk
---> 955448007987
Step 2/4 : ADD . /opt/dpdk
---> d8b58019a7e2
Step 3/4 : WORKDIR /opt/dpdk/examples/helloworld
---> Running in 14fc89f7d3cd
Removing intermediate container 14fc89f7d3cd
---> 065a682c58fd
Step 4/4 : RUN make && cp build/helloworld-shared
/usr/local/bin/helloworld
---> Running in 11e755a7180b
Makefile:44: *** "Please define RTE_SDK environment variable". Stop.
The command '/bin/sh -c make && cp build/helloworld-shared
/usr/local/bin/helloworld' returned a non-zero code: 2
Missing define of RTE_SDK and RTE_TARGET?
Hi Ruifeng,
I think you run you run the command in dpdk/extras. However, this
'Dockerfile.dpdkSampleApp' is expected to be run in dpdk's root dir so that it
is mounted as '/opt/dpdk' in the second step above. I have tested this
Dockerfile on Ubuntu 18.04 and compiled without any error.
RTE_SDK is set correctly, but dpdk's directory is not mounted in the
container.
Abdul,
>> +docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp .
I think this line should be corrected as following, and make it clear it should
be run in dpdk's root.
docker build -t ${DOCKERAPP_TAG} -f extras/Dockerfile.dpdkSampleApp .
Even if the container image is built successfully, there is another problem in
running app because it isn't run in privileged mode.
root@0d2a309dfd2c:/opt/dpdk/examples/helloworld# helloworld
EAL: Detected 16 lcore(s)
EAL: Detected 1 NUMA nodes
...
EAL: Failed to get current mempolicy: Operation not permitted. Assuming
MPOL_DEFAULT.
set_mempolicy: Operation not permitted
set_mempolicy: Operation not permitted
EAL: error allocating rte services array
EAL: FATAL: rte_service_init() failed
EAL: rte_service_init() failed
PANIC in main():
Cannot init EAL
5: [helloworld(+0x84a) [0x55555555484a]]
4: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7)
[0x7ffff7721b97]]
3: [helloworld(+0x818) [0x555555554818]]
2: [/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(__rte_panic+0xbd)
[0x7ffff7afb410]]
1:
[/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(rte_dump_stack+0x2e)
[0x7ffff7b1598e]]
Aborted (core dumped)
I think '--privileged' option should be added to avoid the error.
$ docker run --rm --privileged -it -v /dev/hugepages:/dev/hugepages dpdk-
helloworld
I have one more suggestion. You might have added $USER to docker group
and run docker without sudo like as following.
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
I wounder it is better to use sudo in your examples, or add the instruction for
users not familiar with docker.
Regards,
Yasufumi
Hi Yasufumi,
Thank you for your feedback.
The steps for creating the sample app docker file explains that that we
are creating the file at dpdk root directory. So the assumption here is the
docker
run command also run from there. Not sure if we need to repeat this later also.
The 'cat' command above creates the docker file in dpdk
root directory for simplicity. Actually, we just needed the examples/helloworld
source code from there. As for other user application, the docker file could
be anywhere, not necessarily in dpdk tree at all. User need to run docker build
from where their own docker file is.
Yes.
The dpdk 'base' container should be used as shared-lib to build dpdk application
with libdpdk. So, the dpdk source code, RTE_SDK or RTE_TARGET is not needed
unless the pkg-config is unable to find libdpdk.
Sorry, I mixed up with the case of using these env variables.
I will update the patch with suggested '--privileged' flag on docker run
command.
Not sure if we should cover the docker permissions and docker specific
configurations on this doc though. I am sure user can find those resources
somewhere else if needed.
OK. It is just a suggestion. I though that it is better to include basic
usage concisely, but no need if user can find it easily.
Regards,
Yasufumi
Hi Ruifeng,
Unfortunately I could not create Aarch64 environment to test this. Could you
please
run the following command in your env and see if you can get output as below:
$ docker run --rm dpdk pkg-config --list-all | grep libdpdk
libdpdk DPDK - The Data Plane Development Kit (DPDK).
Regards,
Abdul
+
+This sample app now can be run like any other applicaiton in a
+docker
container.
+
+```
+$ docker run --rm -it -v /dev/hugepages:/dev/hugepages
+dpdk-helloworld ```
+
+## Running the sample app
+Once inside the container run helloword binary
+
+```
+$ root@11233ed2e69c # helloworld
+```
+
--
1.8.3.1
--------------------------------------------------------------
Intel Research and Development Ireland Limited Registered in Ireland
Registered Office: Collinstown Industrial Park, Leixlip, County
Kildare Registered Number: 308263
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
--------------------------------------------------------------
Intel Research and Development Ireland Limited
Registered in Ireland
Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
Registered Number: 308263
This e-mail and any attachments may contain confidential material for the sole
use of the intended recipient(s). Any review or distribution by others is
strictly prohibited. If you are not the intended recipient, please contact the
sender and delete all copies.