[dpdk-users] 答复: DPDK procedure start Error: "PMD: Could not add multiq qdisc (17): File exists"

hfli at netitest.com hfli at netitest.com
Tue Jan 8 02:36:12 CET 2019


Hi Stephen,

 

Thanks for your response, I have found the reason, it due to the reduplicate
“tun_name” in two processes, I added several lines code which get huge
prefix and append to tun_name, it is running well, so I suggest the tun_name
is appended other ID like gepid(), then we can run more dpdk instance
concurrently.

 

# svn diff -r 4977:5088

Index: lib/librte_eal/linuxapp/eal/eal.c

===================================================================

--- lib/librte_eal/linuxapp/eal/eal.c   (版本 4977)

+++ lib/librte_eal/linuxapp/eal/eal.c   (版本 5088)

@@ -1146,6 +1146,12 @@

        return rte_config.process_type;

}

+const char *

+rte_eal_get_huge_prefix(void)

+{

+    return internal_config.hugefile_prefix;

+}

+

int rte_eal_has_hugepages(void)

{

        return ! internal_config.no_hugetlbfs;

Index: lib/librte_eal/common/include/rte_eal.h

===================================================================

--- lib/librte_eal/common/include/rte_eal.h     (版本 4977)

+++ lib/librte_eal/common/include/rte_eal.h     (版本 5088)

@@ -102,6 +102,8 @@

  */

enum rte_proc_type_t rte_eal_process_type(void);

+const char* rte_eal_get_huge_prefix(void);

+

/**

  * Request iopl privilege for all RPL.

  *

Index: drivers/net/tap/rte_eth_tap.c

===================================================================

--- drivers/net/tap/rte_eth_tap.c       (版本 4977)

+++ drivers/net/tap/rte_eth_tap.c       (版本 5088)

@@ -18,6 +18,7 @@

#include <rte_string_fns.h>

#include <rte_ethdev.h>

#include <rte_errno.h>

+#include <rte_eal.h>

 #include <assert.h>

#include <sys/types.h>

@@ -1989,8 +1990,9 @@

        }

        snprintf(tun_name, sizeof(tun_name), "%s%u",

-                DEFAULT_TUN_NAME, tun_unit++);

-

+        DEFAULT_TUN_NAME, tun_unit++);

+    printf("tun_name %s in %s ...\n", tun_name, __func__);

+    

        if (params && (params[0] != '\0')) {

                TAP_LOG(DEBUG, "parameters (%s)", params);

@@ -2175,8 +2177,9 @@

        }

        speed = ETH_SPEED_NUM_10G;

-       snprintf(tap_name, sizeof(tap_name), "%s%u",

-                DEFAULT_TAP_NAME, tap_unit++);

+       snprintf(tap_name, sizeof(tap_name), "%s_%s_%u",

+                DEFAULT_TAP_NAME, rte_eal_get_huge_prefix(), tap_unit++);

+    printf("tap_name %s in %s ...\n", tap_name, __func__);

        memset(remote_iface, 0, RTE_ETH_NAME_MAX_LEN);

        if (params && (params[0] != '\0')) {

#

 

Thanks and Regards,

Jack

 

发件人: Stephen Hemminger <sthemmin at microsoft.com> 
发送时间: 2019年1月8日 5:27
收件人: hfli at netitest.com; matan at mellanox.com; KY Srinivasan <kys at microsoft.
com>; Haiyang Zhang <haiyangz at microsoft.com>
抄送: users at dpdk.org
主题: Re: DPDK procedure start Error: "PMD: Could not add multiq qdisc (17):
File exists"

 

Which Linux distribution are you using? Recently Ubuntu changed to put the
multiq queue discipline in linux-modules-extra package which is not normally
installed.  They changed the packaging and it broke TAP DPDK usage.

  _____  

From: hfli at netitest.com <mailto:hfli at netitest.com>  <hfli at netitest.com
<mailto:hfli at netitest.com> >
Sent: Thursday, January 3, 2019 9:27 PM
To: matan at mellanox.com <mailto:matan at mellanox.com> ; Stephen Hemminger; KY
Srinivasan; Haiyang Zhang
Cc: users at dpdk.org <mailto:users at dpdk.org> 
Subject: 答复: DPDK procedure start Error: "PMD: Could not add multiq qdisc
(17): File exists" 

 

Hi All,

 

I just tried DPDK 18.11 and test_pmd, it output same error, any help for
this?.

 

Run Server Process

# ./build/app/testpmd -l 2,3 -n3 --vdev="net_vdev_netvsc1,iface=port2"
--file-prefix server -- --port-topology=chained -i --nb-cores=1 --nb-ports=1
--total-num-mbufs=2048

EAL: Detected 4 lcore(s)

EAL: Detected 1 NUMA nodes

EAL: Multi-process socket /var/run/dpdk/server/mp_socket

EAL: No free hugepages reported in hugepages-1048576kB

EAL: Probing VFIO support...

EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using unreliable
clock cycles !

rte_pmd_tap_probe(): Initializing pmd_tap for net_tap_vsc0 as dtap0

Interactive-mode selected

Warning: NUMA should be configured manually by using --port-numa-config and
--ring-numa-config parameters along with --numa.

testpmd: create a new mbuf pool <mbuf_pool_socket_0>: n=2048, size=2176,
socket=0

testpmd: preferred mempool ops selected: ring_mp_mc

Configuring Port 0 (socket 0)

Port 0: 00:15:5D:10:85:17

Checking link statuses...

Done

testpmd>

 

Run Client process

# ./build/app/testpmd -l 0,1 -n3 --vdev="net_vdev_netvsc0,iface=port1"
--file-prefix client -- --port-topology=chained -i --nb-cores=1 --nb-ports=1
--total-num-mbufs=2048

EAL: Detected 4 lcore(s)

EAL: Detected 1 NUMA nodes

EAL: Multi-process socket /var/run/dpdk/client/mp_socket

EAL: No free hugepages reported in hugepages-1048576kB

EAL: Probing VFIO support...

EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using unreliable
clock cycles !

rte_pmd_tap_probe(): Initializing pmd_tap for net_tap_vsc0 as dtap0

qdisc_create_multiq(): Could not add multiq qdisc (17): File exists

eth_dev_tap_create(): dtap0: failed to create multiq qdisc.

eth_dev_tap_create():  Disabling rte flow support: File exists(17)

eth_dev_tap_create(): Remote feature requires flow support.

eth_dev_tap_create(): TAP Unable to initialize net_tap_vsc0

EAL: Driver cannot attach the device (net_tap_vsc0)

EAL: Failed to attach device on primary process

net_failsafe: sub_device 1 probe failed (File exists)

rte_pmd_tap_probe(): Initializing pmd_tap for net_tap_vsc0 as dtap1

Interactive-mode selected

Warning: NUMA should be configured manually by using --port-numa-config and
--ring-numa-config parameters along with --numa.

testpmd: create a new mbuf pool <mbuf_pool_socket_0>: n=2048, size=2176,
socket=0

testpmd: preferred mempool ops selected: ring_mp_mc

Cannot set owner to port 1 already owned by Fail-safe_0000000000000001

Configuring Port 0 (socket 0)

Port 0: 06:64:AA:64:57:9D

Checking link statuses...

Done

testpmd> Cannot set owner to port 1 already owned by
Fail-safe_0000000000000001

Cannot set owner to port 1 already owned by Fail-safe_0000000000000001

Cannot set owner to port 1 already owned by Fail-safe_0000000000000001

 

# ethtool -i port1

driver: hv_netvsc

version: 

firmware-version: N/A

expansion-rom-version: 

bus-info: 

supports-statistics: yes

supports-test: no

supports-eeprom-access: no

supports-register-dump: no

supports-priv-flags: no

# ethtool -i port2

driver: hv_netvsc

version: 

firmware-version: N/A

expansion-rom-version: 

bus-info: 

supports-statistics: yes

supports-test: no

supports-eeprom-access: no

supports-register-dump: no

supports-priv-flags: no

#

 

# uname -a

Linux localhost.localdomain 4.20.0-1.el7.elrepo.x86_64 #1 SMP Sun Dec 23
20:11:51 EST 2018 x86_64 x86_64 x86_64 GNU/Linux

 

Thanks and Regards,

Jack

发件人: hfli at netitest.com <mailto:hfli at netitest.com>  <hfli at netitest.com
<mailto:hfli at netitest.com> > 
发送时间: 2019年1月4日 11:47
收件人: 'matan at mellanox.com' <matan at mellanox.com <mailto:matan at mellanox.com>
>
抄送: 'users at dpdk.org' <users at dpdk.org <mailto:users at dpdk.org> >;
'azuredpdk at microsoft.com' <azuredpdk at microsoft.com
<mailto:azuredpdk at microsoft.com> >
主题: DPDK procedure start Error: "PMD: Could not add multiq qdisc (17):
File exists"

 

Hi Matan,

 

Could you help us for below error?

 

PMD: Could not add multiq qdisc (17): File exists

PMD: dtap0: failed to create multiq qdisc.

PMD:  Disabling rte flow support: File exists(17)

PMD: Remote feature requires flow support.

PMD: TAP Unable to initialize net_tap_net_vdev_netvsc0_id0

EAL: Driver cannot attach the device (net_tap_net_vdev_netvsc0_id0)

PMD: net_failsafe: sub_device 1 probe failed (No such file or directory)

PMD: net_failsafe: MAC address is 06:5f:a6:0a:b4:f9

vdev_probe(): failed to initialize : PMD: net_failsafe: MAC address is
06:5f:a6:0a:b4:f9

device

EAL: Bus (vdev) probe failed.

 

 

Our DPDK procedure want to deploy on Hyper-v and Azure Cloud, so we try it
on Hyper-v firstly. It need start 2 processes, a client process use port1, a
server process use port2, port1 and port2 in one internal subnet on a
virtual switch, 

 

But only one process can be started successfully, the other said error,
“PMD: Could not add multiq qdisc (17): File exists”, our procedure is
running well on Vmware/KVM/ASW, is there any help for this?

 

Below is our env:

 

OS: Windows 10 and Hyper-V on it

Guest OS: CentOS7.6(Upgrade kernel to 4.20.0)

DPDK version: 18.02.2

 

# uname -a

Linux localhost.localdomain 4.20.0-1.el7.elrepo.x86_64 #1 SMP Sun Dec 23
20:11:51 EST 2018 x86_64 x86_64 x86_64 GNU/Linux

 

root:/# ifconfig -a

bond0: flags=5122<BROADCAST,MASTER,MULTICAST>  mtu 1500

        ether 46:28:ec:c8:7a:74  txqueuelen 1000  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 1000  (Local Loopback)

        RX packets 75  bytes 6284 (6.1 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 75  bytes 6284 (6.1 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

mgmt1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.16.130  netmask 255.255.255.0  broadcast 192.168.16.255

        inet6 fe80::78e3:1af8:3333:ff45  prefixlen 64  scopeid 0x20<link>

        ether 00:15:5d:10:85:14  txqueuelen 1000  (Ethernet)

        RX packets 5494  bytes 706042 (689.4 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 2163  bytes 438205 (427.9 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

mgmt2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        ether 00:15:5d:10:85:15  txqueuelen 1000  (Ethernet)

        RX packets 3131  bytes 518243 (506.0 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

port1: flags=4675<UP,BROADCAST,RUNNING,ALLMULTI,MULTICAST>  mtu 1500

        ether 00:15:5d:10:85:16  txqueuelen 1000  (Ethernet)

        RX packets 1707  bytes 163778 (159.9 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 693  bytes 70666 (69.0 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

port2: flags=4675<UP,BROADCAST,RUNNING,ALLMULTI,MULTICAST>  mtu 1500

        ether 00:15:5d:10:85:17  txqueuelen 1000  (Ethernet)

        RX packets 900  bytes 112256 (109.6 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 1504  bytes 122428 (119.5 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

root:/# ethtool -i port1

driver: hv_netvsc

version: 

firmware-version: N/A

expansion-rom-version: 

bus-info: 

supports-statistics: yes

supports-test: no

supports-eeprom-access: no

supports-register-dump: no

supports-priv-flags: no

root:/# ethtool -i port2

driver: hv_netvsc

version: 

firmware-version: N/A

expansion-rom-version: 

bus-info: 

supports-statistics: yes

supports-test: no

supports-eeprom-access: no

supports-register-dump: no

supports-priv-flags: no

root:/#

 

Start server process successfully

# ./VM_DPDK -l 3 -n 4 --vdev="net_vdev_netvsc1,iface=port2" --socket-mem
1500 --file-prefix server

EAL: Detected 4 lcore(s)

EAL: No free hugepages reported in hugepages-1048576kB

EAL: Multi-process socket /var/log/.server_unix

EAL: Probing VFIO support...

EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using unreliable
clock cycles !

PMD: net_failsafe: Initializing Fail-safe PMD for
net_failsafe_net_vdev_netvsc1_id0

PMD: net_failsafe: Creating fail-safe device on NUMA socket 0

PMD: Initializing pmd_tap for net_tap_net_vdev_netvsc1_id0 as dtap0

PMD: net_failsafe: MAC address is 00:15:5d:10:85:17

 

Concorrently start client process failed

# ./VM_DPDK -l 2 -n 4 --vdev="net_vdev_netvsc0,iface=port1" --socket-mem
1500 --file-prefix client

EAL: Detected 4 lcore(s)

EAL: No free hugepages reported in hugepages-1048576kB

EAL: Multi-process socket /var/log/.client_unix

EAL: Probing VFIO support...

EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using unreliable
clock cycles !

PMD: net_failsafe: Initializing Fail-safe PMD for
net_failsafe_net_vdev_netvsc0_id0

PMD: net_failsafe: Creating fail-safe device on NUMA socket 0

PMD: Initializing pmd_tap for net_tap_net_vdev_netvsc0_id0 as dtap0

PMD: Could not add multiq qdisc (17): File exists

PMD: dtap0: failed to create multiq qdisc.

PMD:  Disabling rte flow support: File exists(17)

PMD: Remote feature requires flow support.

PMD: TAP Unable to initialize net_tap_net_vdev_netvsc0_id0

EAL: Driver cannot attach the device (net_tap_net_vdev_netvsc0_id0)

PMD: net_failsafe: sub_device 1 probe failed (No such file or directory)

PMD: net_failsafe: MAC address is 06:5f:a6:0a:b4:f9

vdev_probe(): failed to initialize : PMD: net_failsafe: MAC address is
06:5f:a6:0a:b4:f9

device

EAL: Bus (vdev) probe failed.

 

 

 

Thanks and Regards,

Jack



More information about the users mailing list