From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id B818FA00C5; Thu, 30 Apr 2020 06:14:27 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3A4F01D920; Thu, 30 Apr 2020 06:14:27 +0200 (CEST) Received: from mail-qt1-f194.google.com (mail-qt1-f194.google.com [209.85.160.194]) by dpdk.org (Postfix) with ESMTP id D00B71D91E for ; Thu, 30 Apr 2020 06:14:25 +0200 (CEST) Received: by mail-qt1-f194.google.com with SMTP id 71so3903924qtc.12 for ; Wed, 29 Apr 2020 21:14:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=K2NXGaeX+keVyIUHwNTgF+8nG26Dt4lhUsZ2uf3t9MM=; b=CkEsXAMQa8MQPveM9i92TbzFkq+KIy8x7oeDJHLIl8YX+YSCu0GDBbX19Dk+23Hnyj T/2Wx6EBb9RicL3NpGEjTql1mTDLIn9TRnLnqPqTaqwG/Ub3pgQBtZHK0LQmzqUzCGeE xYfQtyiXKhyY25zs61sUhXRz466YXYVteJQgauA81J+JTjIQdVB8EOb+yJVw2pOhPat2 Uddd/6rFX/7WgU9zq834GH+XKBEpMsTSo9HQGZNdUymiwPTfK/4fqig/vSVPzCdymJvL RBuTQa1E9AUGc1cNhpmzFW/b1btZ/X7WzRvXpXx7RW1roZUmw7NDCaV93geiq2cd3Sve TavA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=K2NXGaeX+keVyIUHwNTgF+8nG26Dt4lhUsZ2uf3t9MM=; b=E52JXaihvopgbVjdx66Cq3Kyk3wySHdE8bjNaYSP+OWfyy94QnLRUEon31B6lndtbC ctbQbaB+U7ri5MbFNhMB/Sfjfd3yN75Rx7V0RTh+i+GkrpsEyc8x1NwY2fLfD/Qpi1Jc fk4wN/xAqOHrDFSCGcuXy+0/fDpDZTabnH/5p9H+7ck232PJFVGbLRZAJMNV0oOZ8pBE 7U4YiP3zQnMYvXKZQBAfY0+qyrs1dGjsldlgM1VS8OvFwZybulx3ZxVlN724/4ANqV7t c2QbiiZ3vAvapbPICw5yEXqRl/6rWZ8CstNHIFy1xy+nHWWoPG/ZzWPk79Xx9/XurPtr fEAQ== X-Gm-Message-State: AGi0PubHPmL1t4hWqfQqqbAlOQaKXKUupqBc/O60gVDoJR0E0t6d3geD hN48NZjn2rqLOxOG/tfsvyls6abnnSrufG6+uy4= X-Google-Smtp-Source: APiQypL2mcyDiwnhAsG38hq9PG8Xqtp/l7NrqkiQ5ot8Wfay8XCt+V3cYCaq1B8kAVRQWSQN+7JvTY757m03RpK2WhM= X-Received: by 2002:ac8:3665:: with SMTP id n34mr1702012qtb.227.1588220065090; Wed, 29 Apr 2020 21:14:25 -0700 (PDT) MIME-Version: 1.0 From: =?UTF-8?B?6ZmI5Lqa6L6JLeS6keadieeglOWPkemDqA==?= Date: Thu, 30 Apr 2020 12:14:13 +0800 Message-ID: To: anatoly.burakov@intel.com Cc: dev@dpdk.org, jiping@yunshan.net, xiangyang@yunshan.net Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] eal: can not run secondary process on openstack environment 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" Deleting xdg_runtime_dir and fallback, runtime_dir will always be "/var/run" defined by code: static const char *default_runtime_dir = "/var/run" Here is my patch: # diff -ruN ~/dpdk-18.11.6/lib/librte_eal/linuxapp/eal/eal_orig.c eal.c --- ~/dpdk-18.11.6/lib/librte_eal/linuxapp/eal/eal_orig.c 2020-04-14 12:16:04.774609296 +0800 +++ eal.c 2020-04-30 11:29:26.526918889 +0800 @@ -105,18 +105,9 @@ eal_create_runtime_dir(void) { const char *directory = default_runtime_dir; - const char *xdg_runtime_dir = getenv("XDG_RUNTIME_DIR"); - const char *fallback = "/tmp"; char tmp[PATH_MAX]; int ret; - if (getuid() != 0) { - /* try XDG path first, fall back to /tmp */ - if (xdg_runtime_dir != NULL) - directory = xdg_runtime_dir; - else - directory = fallback; - } /* create DPDK subdirectory under runtime dir */ ret = snprintf(tmp, sizeof(tmp), "%s/dpdk", directory); if (ret < 0 || ret == sizeof(tmp)) { Date: Fri, 17 Apr 2020 14:52:58 +0100 From: "Burakov, Anatoly" To: ???-????? , dev@dpdk.org, jiping@yunshan.net, xiangyang@yunshan.net Subject: Re: [dpdk-dev] eal: can not run secondary process on openstack environment Message-ID: <8f5bb1c4-7572-0c18-ecab-89c1340430cb@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed On 15-Apr-20 11:06 AM, ???-????? wrote: > dpdk version: 18.11 > > Ovs-dpdk runs as openvswitch account on the openstack environment. Use the > root account to run another --proc-type=secondary program, > such as dpdk-pdump or helloword with parameter --proc-type=secondary , and > it will report an Err: Cannot open '/var/run/dpdk/rte/config' for > rte_mem_config. > > Check the source code eal.c: > > int > eal_create_runtime_dir(void) > { > const char *directory = default_runtime_dir; > const char *xdg_runtime_dir = getenv("XDG_RUNTIME_DIR"); > const char *fallback = "/tmp"; > char tmp[PATH_MAX]; > int ret; > > if (getuid() != 0) { > /* try XDG path first, fall back to /tmp */ > if (xdg_runtime_dir != NULL) > directory = xdg_runtime_dir; > else > directory = fallback; > } > > /* create DPDK subdirectory under runtime dir */ > ret = snprintf(tmp, sizeof(tmp), "%s/dpdk", directory); > if (ret < 0 || ret == sizeof(tmp)) { > RTE_LOG(ERR, EAL, "Error creating DPDK runtime path > name\n"); > return -1; > } > > /* create prefix-specific subdirectory under DPDK runtime dir */ > ret = snprintf(runtime_dir, sizeof(runtime_dir), "%s/%s", > tmp, eal_get_hugefile_prefix()); > if (ret < 0 || ret == sizeof(runtime_dir)) { > RTE_LOG(ERR, EAL, "Error creating prefix-specific runtime > path name\n"); > return -1; > } > > The root account is corresponds to the directory /var/run/DPDK/rte, but > openvswitch account is directory /var/run/openvswitch DPDK/rte. > Then, I changed to the openvswitch account and run the process again, > errors below were reported: > EAL: Detected 40 lcore(s) > EAL: Detected 2 NUMA nodes > EAL: Multi-process socket > /var/run/openvswitch/dpdk/rte/mp_socket_306857_7e76690dafe702 > EAL: Probing VFIO support... > EAL: VFIO support initialized > EAL: Could not map memory from primary process > EAL: FATAL: Cannot init memory > EAL: Cannot init memory > > There seems to be insufficient permissions. So, I change the code blow and > all the things get to be OK: > > int > eal_create_runtime_dir(void) > { > const char *directory = default_runtime_dir; > const char *xdg_runtime_dir = getenv("XDG_RUNTIME_DIR"); > const char *fallback = "/tmp"; > char tmp[PATH_MAX]; > int ret; > > if (getuid() != 0) { > /* try XDG path first, fall back to /tmp */ > if (xdg_runtime_dir != NULL) > directory = xdg_runtime_dir; > else > directory = fallback; > } > > directory = "/var/run/openvswitch"; // added by my for test......... > /* create DPDK subdirectory under runtime dir */ > ret = snprintf(tmp, sizeof(tmp), "%s/dpdk", directory); > if (ret < 0 || ret == sizeof(tmp)) { > RTE_LOG(ERR, EAL, "Error creating DPDK runtime path > name\n"); > return -1; > } > > This is supposed to be a DPDK BUG. Considering that the primary and > secondary processes may not be the same account, > process with parameter --proc-type=secondary should get the runtime > directory from the primary process instead of > generating a directory as it does now. > I'm not sure how would that even be accomplished, because there is no way the initializing secondary process knows where to look for primary processes. Do you have any suggestions as to the mechanism of finding a primary process in such case? -- Thanks, Anatoly