From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E9BFFC2D0C0 for ; Mon, 9 Dec 2019 09:44:19 +0000 (UTC) Received: from dpdk.org (dpdk.org [92.243.14.124]) by mail.kernel.org (Postfix) with ESMTP id 519B2207FF for ; Mon, 9 Dec 2019 09:44:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="oHoLqqwW" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 519B2207FF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dev-bounces@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7CBDD1BF6F; Mon, 9 Dec 2019 10:44:18 +0100 (CET) Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by dpdk.org (Postfix) with ESMTP id 29B081BF6E for ; Mon, 9 Dec 2019 10:44:17 +0100 (CET) Received: by mail-pg1-f194.google.com with SMTP id l24so6840637pgk.2 for ; Mon, 09 Dec 2019 01:44:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=Ymf3+fysi5x+73Xr/iByQWUD16fF7ZR6yFYTPUy25Ok=; b=oHoLqqwWkF3TawUOFbOKecoAZTi6s9JBY5/iI92myF0dRktly3sd+Si8bZ/UA5aD2E IyWMNhEU6VAutH1XvIl+9csjOwd6kqZbQOy54Y7UWgML6647cTaMyrqR6FIeXMO4wEjg qMnunJ8cGQf/6NF6CBLqUPhq1YHNkli4J6g1wIOG4ca+2econOTx5OV7o9UmW3kJ+6jH lKrsWD9Ijt1OIstlUqjG+Mdr8j/rMcFeo+G3HQaH5IbPhAm5XlJM47VZjjsBWXOiJO2W igTuqMxhtALmHYv53qsnNLbmUjk7qh+Sb0IkiwqToBH1neQp6SBLLkSIg155M7ZNKsFt BUkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=Ymf3+fysi5x+73Xr/iByQWUD16fF7ZR6yFYTPUy25Ok=; b=L+SUGXU/GpGXWg2/qYZ5qe9Rr1ZMkrI3iv32IkEdpm+3Aetu6cYQp6SQTR37d2kvZk SSOC4Nd9UtG2BKdX0eHwYQhGBHMYiCthsdtQbk//G0vJIIfqi8yPJDIIMn9/e3BdEsQ1 LJcB0usgGjWUiZCkl9cQj24RBo390AmzcxZv7BDKNhEmpyiBVRZPV3wb/XYKNN3hKpg2 EK7Q6v1x31VKK3xh73WMZ0JGDYsFO9vxM2r0oWoCGT2y2G9uTeSfUxiEzAnd7g9qcprH Svu91+/SnNoAAgLZmTr3aNT8rYHusdt3CBVr0qrb8qh401cG/SwOkHQ35A9k5zIMkRoe RGRw== X-Gm-Message-State: APjAAAWchtOiQxoiQRN/d1rVI6d7++yLidOWfNLlE2iTlx+ISLBTc+4Y UT70WdTUwbnO/YV+JnuZXfQ= X-Google-Smtp-Source: APXvYqxp+3tmyKZp6noFdUIHN3emRSVi2cPAniVafFnDxZ0czr1UM4vY/xjV9CYAMA55G88fqhX76A== X-Received: by 2002:a63:1e23:: with SMTP id e35mr18153871pge.219.1575884656243; Mon, 09 Dec 2019 01:44:16 -0800 (PST) Received: from mugwort.local ([192.47.164.146]) by smtp.gmail.com with ESMTPSA id k12sm24141751pgm.65.2019.12.09.01.44.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 09 Dec 2019 01:44:15 -0800 (PST) To: "Ruifeng Wang (Arm Technology China)" , "Halim, Abdul" , "dev@dpdk.org" Cc: "Kinsella, Ray" , nd , "Richardson, Bruce" References: <1566924290-451677-1-git-send-email-abdul.halim@intel.com> <1575373341-29969-1-git-send-email-abdul.halim@intel.com> <199e2fda-bfb2-bd46-0b89-9d575f6c8989@gmail.com> From: Yasufumi Ogawa Message-ID: <0964fa52-990e-985b-ba9e-773effc44b27@gmail.com> Date: Mon, 9 Dec 2019 18:44:12 +0900 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker image X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 2019/12/09 12:23, Ruifeng Wang (Arm Technology China) wrote: >> -----Original Message----- >> From: Halim, Abdul >> Sent: Friday, December 6, 2019 19:13 >> To: Yasufumi Ogawa ; Ruifeng Wang (Arm >> Technology China) ; dev@dpdk.org >> Cc: Kinsella, Ray ; nd ; Richardson, >> Bruce >> Subject: RE: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker >> image >> >> >> >>> -----Original Message----- >>> From: Yasufumi Ogawa >>> Sent: Thursday, December 5, 2019 7:52 PM >>> To: Ruifeng Wang (Arm Technology China) ; >> Halim, >>> Abdul ; dev@dpdk.org >>> Cc: Kinsella, Ray ; nd >>> Subject: Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building >>> docker image >>> >>> On 2019/12/05 23:13, Ruifeng Wang (Arm Technology China) wrote: >>>> >>>>> -----Original Message----- >>>>> From: dev On Behalf Of Abdul Halim >>>>> Sent: Tuesday, December 3, 2019 19:42 >>>>> To: dev@dpdk.org >>>>> Cc: ray.kinsella@intel.com; yasufum.o@gmail.com; Abdul Halim >>>>> >>>>> Subject: [dpdk-dev] [PATCH v3] build: add dockerfile for building >>>>> docker image >>>>> >>>>> Adding a Dockerfile with Ubuntu bionic base image to build dpdk as >>>>> shared library. This docker image could be used as base image to >>>>> build and run dpdk applications in containers. >>>>> >>>>> Signed-off-by: Abdul Halim >>>>> >>> [...] >>>>> diff --git a/extras/README.md b/extras/README.md new file mode >>> 100644 >>>>> index 0000000..f38d7f1 >>>>> --- /dev/null >>>>> +++ b/extras/README.md >>>>> @@ -0,0 +1,52 @@ >>>>> +# Build DPDK Docker image >>>>> + >>>>> +To build a docker image run the following command from dpdk root >>>>> directory. >>>>> + >>>>> +``` >>>>> +DOCKER_TAG="dpdk" >>>>> +docker build -t ${DOCKER_TAG} -f extras/Dockerfile.bionic . >>>>> +``` >>>>> + >>>>> +# Example of how to use this dpdk library image >>>>> + >>>>> +The following steps shows how to use the dpdk shared library >>>>> +container to build and run a dpdk application without having to >>>>> +build dpdk library for each application. >>>>> + >>>>> +## Create a dpdk sample app docker file with 'dpdk' as the base >>>>> +image >>>>> + >>>>> +Create a docker file to build the dpdk helloworld application. >>>>> +Since, we are creating a docker file for dpdk helloworld app we >>>>> +need to add the dpdk source files, thus create the following >>>>> +docker file in dpdk root >>>>> directory. >>>>> + >>>>> +``` >>>>> +cat << EOF > Dockerfile.dpdkSampleApp FROM dpdk >>>>> + >>>>> +ADD . /opt/dpdk >>>>> + >>>>> +WORKDIR /opt/dpdk/examples/helloworld RUN make && cp >>>>> +build/helloworld-shared /usr/local/bin/helloworld EOF ``` >>>>> + >>>>> +## Build sample app docker image >>>>> + >>>>> +``` >>>>> +DOCKERAPP_TAG="dpdk-helloworld" >>>>> +docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . >>>>> +``` >>>> >>>> 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. >>> > Hi Yasufumi, > > I ran the command in dpdk root dir which should be correct. > The issue was due to shared library image not been correctly built. See below. Hi Ruifeng, I've misunderstood about RTE_SDK as Abdul said. Sorry. > > Thanks. > /Ruifeng >>> 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+0x2 >>> e) >>> [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. >> >> 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. >> >> 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. >> >> 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). >> > Hi Abdul, > > Yes, the issue was due to pkg-config could not find libdpdk. > I didn't get expected libdpdk info in pkg-config output. > > Just found that even my building of dpdk shared library image was failed. > Shared library image build failure was due to local 'build' directory in my > dpdk source tree. And the 'build' impacted meson configuration in container. > > Not sure if it is a worth to mention that base dpdk tree should be clean. I am not sure the problem is always happened if the tree is not cleaned, but might be helpful. Regards, Yasufumi > > With '--privileged' flag suggested by Yasufumi: > Tested-by: Ruifeng Wang > > Thanks. > /Ruifeng >> >> 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.