From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out20-1.mail.aliyun.com (out20-1.mail.aliyun.com [115.124.20.1]) by dpdk.org (Postfix) with ESMTP id 20B5F1B202 for ; Wed, 9 Jan 2019 01:38:43 +0100 (CET) X-Alimail-AntiSpam: AC=CONTINUE; BC=0.03835052|-1; CH=green; FP=0|0|0|0|0|-1|-1|-1; HT=e02c03309; MF=hfli@netitest.com; NM=1; PH=DS; RN=5; RT=5; SR=0; TI=SMTPD_---.DjEMM5Z_1546994317; Received: from PC20180210SSYA(mailfrom:hfli@netitest.com fp:SMTPD_---.DjEMM5Z_1546994317) by smtp.aliyun-inc.com(10.147.40.7); Wed, 09 Jan 2019 08:38:38 +0800 From: To: "'Stephen Hemminger'" , , "'KY Srinivasan'" , "'Haiyang Zhang'" Cc: References: <001401d4a3ee$279bc190$76d344b0$@netitest.com> , <003501d4a6f2$89f75050$9de5f0f0$@netitest.com>, In-Reply-To: Date: Wed, 9 Jan 2019 08:38:40 +0800 Message-ID: <005401d4a7b3$aadb7280$00925780$@netitest.com> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQKLMMCFalGTmKyAhI6lhdKryPp98AIqQBVAAV0bEfECyeoAhAHxVQtno/bwexA= Content-Language: zh-cn X-Mailman-Approved-At: Wed, 09 Jan 2019 17:55:28 +0100 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-users] =?gb2312?b?tPC4tDogRFBESyBwcm9jZWR1cmUgc3RhcnQgRXJy?= =?gb2312?b?b3I6ICJQTUQ6IENvdWxkIG5vdCBhZGQgbXVsdGlxIHFkaXNjICgx?= =?gb2312?b?Nyk6IEZpbGUgZXhpc3RzIg==?= X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Jan 2019 00:38:47 -0000 Hi Stephen, =20 Got it, I have removed the =A1=B0_=A1=B0 from =A1=B0tun_name=A1=B1, so = it ensure the length less than 15 bytes. =20 =20 Thanks and Regards, Jack =B7=A2=BC=FE=C8=CB: Stephen Hemminger =20 =B7=A2=CB=CD=CA=B1=BC=E4: 2019=C4=EA1=D4=C29=C8=D5 3:35 =CA=D5=BC=FE=C8=CB: hfli@netitest.com; matan@mellanox.com; KY Srinivasan = ; Haiyang Zhang =B3=AD=CB=CD: users@dpdk.org =D6=F7=CC=E2: Re: DPDK procedure start Error: "PMD: Could not add multiq = qdisc (17): File exists" =20 Part of the problem with tap_name is that it is limited to 15 characters = so this might break if hugefile_prefix was long. _____ =20 From: Stephen Hemminger Sent: Tuesday, January 8, 2019 11:32 AM To: hfli@netitest.com ; matan@mellanox.com ; KY Srinivasan; Haiyang Zhang Cc: users@dpdk.org =20 Subject: Re: DPDK procedure start Error: "PMD: Could not add multiq = qdisc (17): File exists"=20 =20 So the tun device name needs to be unique, and tun_unit variable is = located in per-process part of DPDK. Another solution would be to move the tun unit into the common memory = area, or maybe put the pid into the tun name. _____ =20 From: hfli@netitest.com > Sent: Monday, January 7, 2019 5:36 PM To: Stephen Hemminger; matan@mellanox.com ; = KY Srinivasan; Haiyang Zhang Cc: users@dpdk.org =20 Subject: =B4=F0=B8=B4: DPDK procedure start Error: "PMD: Could not add = multiq qdisc (17): File exists"=20 =20 Hi Stephen, =20 Thanks for your response, I have found the reason, it due to the = reduplicate =A1=B0tun_name=A1=B1 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. =20 # svn diff -r 4977:5088 Index: lib/librte_eal/linuxapp/eal/eal.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- lib/librte_eal/linuxapp/eal/eal.c (=B0=E6=B1=BE 4977) +++ lib/librte_eal/linuxapp/eal/eal.c (=B0=E6=B1=BE 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 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- lib/librte_eal/common/include/rte_eal.h (=B0=E6=B1=BE 4977) +++ lib/librte_eal/common/include/rte_eal.h (=B0=E6=B1=BE 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 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- drivers/net/tap/rte_eth_tap.c (=B0=E6=B1=BE 4977) +++ drivers/net/tap/rte_eth_tap.c (=B0=E6=B1=BE 5088) @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -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__); + =20 if (params && (params[0] !=3D '\0')) { TAP_LOG(DEBUG, "parameters (%s)", params); @@ -2175,8 +2177,9 @@ } speed =3D 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] !=3D '\0')) { # =20 Thanks and Regards, Jack =20 =B7=A2=BC=FE=C8=CB: Stephen Hemminger >=20 =B7=A2=CB=CD=CA=B1=BC=E4: 2019=C4=EA1=D4=C28=C8=D5 5:27 =CA=D5=BC=FE=C8=CB: hfli@netitest.com ; = matan@mellanox.com ; KY Srinivasan >; Haiyang Zhang > =B3=AD=CB=CD: users@dpdk.org =20 =D6=F7=CC=E2: Re: DPDK procedure start Error: "PMD: Could not add multiq = qdisc (17): File exists" =20 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. _____ =20 From: hfli@netitest.com > Sent: Thursday, January 3, 2019 9:27 PM To: matan@mellanox.com ; Stephen Hemminger; = KY Srinivasan; Haiyang Zhang Cc: users@dpdk.org =20 Subject: =B4=F0=B8=B4: DPDK procedure start Error: "PMD: Could not add = multiq qdisc (17): File exists"=20 =20 Hi All, =20 I just tried DPDK 18.11 and test_pmd, it output same error, any help for this?. =20 Run Server Process # ./build/app/testpmd -l 2,3 -n3 = --vdev=3D"net_vdev_netvsc1,iface=3Dport2" --file-prefix server -- --port-topology=3Dchained -i --nb-cores=3D1 = --nb-ports=3D1 --total-num-mbufs=3D2048 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=3Dyes nonstop_tsc=3Dno -> 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 : n=3D2048, = size=3D2176, socket=3D0 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> =20 Run Client process # ./build/app/testpmd -l 0,1 -n3 = --vdev=3D"net_vdev_netvsc0,iface=3Dport1" --file-prefix client -- --port-topology=3Dchained -i --nb-cores=3D1 = --nb-ports=3D1 --total-num-mbufs=3D2048 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=3Dyes nonstop_tsc=3Dno -> 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 : n=3D2048, = size=3D2176, socket=3D0 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 =20 # ethtool -i port1 driver: hv_netvsc version:=20 firmware-version: N/A expansion-rom-version:=20 bus-info:=20 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:=20 firmware-version: N/A expansion-rom-version:=20 bus-info:=20 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no # =20 # 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 =20 Thanks and Regards, Jack =B7=A2=BC=FE=C8=CB: hfli@netitest.com = >=20 =B7=A2=CB=CD=CA=B1=BC=E4: 2019=C4=EA1=D4=C24=C8=D5 11:47 =CA=D5=BC=FE=C8=CB: 'matan@mellanox.com' > =B3=AD=CB=CD: 'users@dpdk.org' = >; 'azuredpdk@microsoft.com' > =D6=F7=CC=E2: DPDK procedure start Error: "PMD: Could not add multiq = qdisc (17): File exists" =20 Hi Matan, =20 Could you help us for below error? =20 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. =20 =20 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,=20 =20 But only one process can be started successfully, the other said error, =A1=B0PMD: Could not add multiq qdisc (17): File exists=A1=B1, our = procedure is running well on Vmware/KVM/ASW, is there any help for this? =20 Below is our env: =20 OS: Windows 10 and Hyper-V on it Guest OS: CentOS7.6(Upgrade kernel to 4.20.0) DPDK version: 18.02.2 =20 # 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 =20 root:/# ifconfig -a bond0: flags=3D5122 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 =20 lo: flags=3D73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 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 =20 mgmt1: flags=3D4163 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 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 =20 mgmt2: flags=3D4163 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 =20 port1: flags=3D4675 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 =20 port2: flags=3D4675 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 =20 root:/# ethtool -i port1 driver: hv_netvsc version:=20 firmware-version: N/A expansion-rom-version:=20 bus-info:=20 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:=20 firmware-version: N/A expansion-rom-version:=20 bus-info:=20 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no root:/# =20 Start server process successfully # ./VM_DPDK -l 3 -n 4 --vdev=3D"net_vdev_netvsc1,iface=3Dport2" = --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=3Dyes nonstop_tsc=3Dno -> 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 =20 Concorrently start client process failed # ./VM_DPDK -l 2 -n 4 --vdev=3D"net_vdev_netvsc0,iface=3Dport1" = --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=3Dyes nonstop_tsc=3Dno -> 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. =20 =20 =20 Thanks and Regards, Jack