sdnfv / openNetVM

A high performance container-based NFV platform from GW and UCR.
http://sdnfv.github.io/onvm/
Other
261 stars 134 forks source link

Error while running "helloworld" #255

Closed felipeary91 closed 3 years ago

felipeary91 commented 3 years ago

Hi, I installed DPDK 19.02 using ./usertools/dpdk-setup.sh and am facing a error while running the helloworld example. When running ./helloworld the error is Illegal instruction (core dumped) and when running sudo ./helloworld then it is Illegal instruction. My environmental variables are declared in ~/.bashrc as:

export RTE_SDK=/home/felipe/dpdk
export RTE_TARGET=x86_64-native-linuxapp-gcc

The output of lscpu is:

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              8
On-line CPU(s) list: 0-7
Thread(s) per core:  1
Core(s) per socket:  4
Socket(s):           2
NUMA node(s):        2
Vendor ID:           AuthenticAMD
CPU family:          16
Model:               4
Model name:          Quad-Core AMD Opteron(tm) Processor 2376
Stepping:            2
CPU MHz:             2300.000
CPU max MHz:         2300.0000
CPU min MHz:         800.0000
BogoMIPS:            4587.95
Virtualisation:      AMD-V
L1d cache:           64K
L1i cache:           64K
L2 cache:            512K
L3 cache:            6144K
NUMA node0 CPU(s):   0,2,4,6
NUMA node1 CPU(s):   1,3,5,7
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt hw_pstate vmmcall npt lbrv svm_lock nrip_save

I would appreciate any help you can provide. Thanks.

twood02 commented 3 years ago

This sounds like a DPDK issue (not OpenNetVM) so you will probably get more help from the DPDK users mailing list https://mails.dpdk.org/listinfo

If you follow our install guide and use our scripts it might fix your issues: https://github.com/sdnfv/openNetVM/blob/master/docs/Install.md

Our current release uses DPDK 18. Our next release coming in a couple weeks uses DPDK 20 (or you can get this now from the develop branch).

felipeary91 commented 3 years ago

Hi,

Thanks for your reply. I reinstalled DPDK following the steps provided but the error persists. Anyway, I'll send a message to the mail list and will wait for a response.

Thanks, Felipe

dennisafa commented 3 years ago

Can you please post the way you installed DPDK? If you have any additional parameters you included when building please post them.

On Sun, Aug 30, 2020 at 8:13 AM felipeay91 notifications@github.com wrote:

Hi,

I installed DPDK 19.02 using ./usertools/dpdk-setup.sh and am facing a error while running the

helloworld example. When running ./helloworld the error is

Illegal instruction (core dumped) and when running sudo ./helloworld

then it is Illegal instruction. My environmental variables are declared in

~/.bashrc as:

export RTE_SDK=/home/felipe/dpdk

export RTE_TARGET=x86_64-native-linuxapp-gcc

The output of lscpu is:

Architecture: x86_64

CPU op-mode(s): 32-bit, 64-bit

Byte Order: Little Endian

CPU(s): 8

On-line CPU(s) list: 0-7

Thread(s) per core: 1

Core(s) per socket: 4

Socket(s): 2

NUMA node(s): 2

Vendor ID: AuthenticAMD

CPU family: 16

Model: 4

Model name: Quad-Core AMD Opteron(tm) Processor 2376

Stepping: 2

CPU MHz: 2300.000

CPU max MHz: 2300.0000

CPU min MHz: 800.0000

BogoMIPS: 4587.95

Virtualisation: AMD-V

L1d cache: 64K

L1i cache: 64K

L2 cache: 512K

L3 cache: 6144K

NUMA node0 CPU(s): 0,2,4,6

NUMA node1 CPU(s): 1,3,5,7

Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt hw_pstate vmmcall npt lbrv svm_lock nrip_save

I would appreciate any help you can provide.

Thanks.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/sdnfv/openNetVM/issues/255, or unsubscribe https://github.com/notifications/unsubscribe-auth/AH3EIZVGQH4Y34W4M5MNM63SDI65DANCNFSM4QPSYQ2A .

felipeary91 commented 3 years ago

Hi @dennisafa,

I installed in the way explained here: https://github.com/sdnfv/openNetVM/blob/master/docs/Install.md and followed all the steps as mentioned. The only thing I did different was the environmental variable declaration export ONVM_NIC_PCI=" 07:00.0 07:00.1 " were I declared only one NIC and therefore the command were export ONVM_NIC_PCI=" 02:00.0 ".

The list of NICs is:

lspci | grep -i eth
01:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5721 Gigabit Ethernet PCI Express (rev 21)
02:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5721 Gigabit Ethernet PCI Express (rev 21)
06:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
06:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)

At the end of the installation process I got:

CPU(s):              8
Thread(s) per core:  1
Core(s) per socket:  4
Socket(s):           2
Model name:          Quad-Core AMD Opteron(tm) Processor 2376
Environment setup complete.
ONVM INSTALL COMPLETED SUCCESSFULLY

And when running the command ./helloworld -l 0,1 -n 1 as mentioned in the guide I get: Illegal instruction (core dumped)

Thanks for your help.

BR, Felipe

dennisafa commented 3 years ago

Hi @dennisafa,

I installed in the way explained here: https://github.com/sdnfv/openNetVM/blob/master/docs/Install.md

and followed all the steps as mentioned. The only thing I did different was the environmental variable

declaration export ONVM_NIC_PCI=" 07:00.0 07:00.1 " were I declared only one NIC and therefore the

command were export ONVM_NIC_PCI=" 02:00.0 ".

The list of NICs is:


lspci | grep -i eth

01:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5721 Gigabit Ethernet PCI Express (rev 21)

02:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5721 Gigabit Ethernet PCI Express (rev 21)

06:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)

06:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)

At the end of the installation process I got:


CPU(s):              8

Thread(s) per core:  1

Core(s) per socket:  4

Socket(s):           2

Model name:          Quad-Core AMD Opteron(tm) Processor 2376

Environment setup complete.

ONVM INSTALL COMPLETED SUCCESSFULLY

And when running the command ./helloworld -l 0,1 -n 1

as mentioned in the guide I get: Illegal instruction (core dumped)

Thanks for your help.

BR,

Did you bind an associated igb_uio module or something similar to the 02:00:00 NIC? Whats the output of ./usertools/dpdk-devbind.py --status?

felipeary91 commented 3 years ago

Hi,

I think there's no such step for binding (I think binding happens when running ./install.sh?)... This is the output of ./usertools/dpdk-devbind.py --status?

Network devices using DPDK-compatible driver
============================================
0000:02:00.0 'NetXtreme BCM5721 Gigabit Ethernet PCI Express 1659' drv=igb_uio unused=tg3,uio_pci_generic

Network devices using kernel driver
===================================
0000:01:00.0 'NetXtreme BCM5721 Gigabit Ethernet PCI Express 1659' if=enp1s0 drv=tg3 unused=igb_uio,uio_pci_generic *Active*

Other Network devices
=====================
0000:06:00.0 'I350 Gigabit Network Connection 1521' unused=igb,igb_uio,uio_pci_generic
0000:06:00.1 'I350 Gigabit Network Connection 1521' unused=igb,igb_uio,uio_pci_generic

No 'Crypto' devices detected
============================

No 'Eventdev' devices detected
==============================

No 'Mempool' devices detected
=============================

No 'Compress' devices detected
==============================

Thanks.

BR, Felipe

dennisafa commented 3 years ago

Hi,

I think there's no such step for binding (I think binding happens when running ./install.sh?)...

This is the output of ./usertools/dpdk-devbind.py --status?


Network devices using DPDK-compatible driver

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

0000:02:00.0 'NetXtreme BCM5721 Gigabit Ethernet PCI Express 1659' drv=igb_uio unused=tg3,uio_pci_generic

Network devices using kernel driver

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

0000:01:00.0 'NetXtreme BCM5721 Gigabit Ethernet PCI Express 1659' if=enp1s0 drv=tg3 unused=igb_uio,uio_pci_generic *Active*

Other Network devices

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

0000:06:00.0 'I350 Gigabit Network Connection 1521' unused=igb,igb_uio,uio_pci_generic

0000:06:00.1 'I350 Gigabit Network Connection 1521' unused=igb,igb_uio,uio_pci_generic

No 'Crypto' devices detected

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

No 'Eventdev' devices detected

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

No 'Mempool' devices detected

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

No 'Compress' devices detected

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

Thanks.

BR,

Felipe

Ok that looks good - just making sure it was bound. In your original post you said you ran just sudo ./hello-world. Did you include the arguments, i.e sudo ./build/helloworld -l 0,1 -n 1?

felipeary91 commented 3 years ago

Hi @dennisafa,

Yes, I have run it with the arguments ./build/helloworld -l 0,1 -n 1 and get Illegal instruction (core dumped), and without the arguments ./build/helloworld and get the same mistake. Looking on the web I've run even ./build/helloworld -c 1 but the same thing.

Thanks.

BR, Felipe

dennisafa commented 3 years ago

Hi @dennisafa,

Yes, I have run it with the arguments ./build/helloworld -l 0,1 -n 1 and get Illegal instruction (core dumped) and without the arguments ./build/helloworld and get the same mistake. Looking on the web I've run even

./build/helloworld -c 1 but the same thing.

Thanks.

BR,

Felipe

Can you try the intel card? I think netxtream broadcom may not be supported: https://core.dpdk.org/supported/

felipeary91 commented 3 years ago

Hi @dennisafa,

I have tried what you recommended, but the problem persists. In my case rebooted the server, change the environmental variable export ONVM_NIC_PCI=" 06:00.0 " and run ./install.sh again. This is the result:

sudo ./usertools/dpdk-devbind.py --status

Network devices using DPDK-compatible driver
============================================
0000:06:00.0 'I350 Gigabit Network Connection 1521' drv=igb_uio unused=igb

Network devices using kernel driver
===================================
0000:01:00.0 'NetXtreme BCM5721 Gigabit Ethernet PCI Express 1659' if=enp1s0 drv=tg3 unused=igb_uio *Active*
0000:02:00.0 'NetXtreme BCM5721 Gigabit Ethernet PCI Express 1659' if=enp2s0 drv=tg3 unused=igb_uio 
0000:06:00.1 'I350 Gigabit Network Connection 1521' if=enp6s0f1 drv=igb unused=igb_uio 

No 'Crypto' devices detected
============================

No 'Eventdev' devices detected
==============================

No 'Mempool' devices detected
=============================

No 'Compress' devices detected
==============================

After running sudo ./build/helloworld -l 0,1 -n 1, the error Illegal instruction still appears.

BR, Felipe

dennisafa commented 3 years ago

Could you try making and running ONVM (not DPDK test programs) and let me know if it still fails?

On Sun, Aug 30, 2020 at 3:37 PM felipeay91 notifications@github.com wrote:

Hi @dennisafa https://github.com/dennisafa,

I have tried what you recommended, but the problem persists. In my case rebooted the server, change the environmental variable export ONVM_NIC_PCI=" 06:00.0 " and run ./install.sh again. This is the result:

sudo ./usertools/dpdk-devbind.py --status

Network devices using DPDK-compatible driver

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

0000:06:00.0 'I350 Gigabit Network Connection 1521' drv=igb_uio unused=igb

Network devices using kernel driver

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

0000:01:00.0 'NetXtreme BCM5721 Gigabit Ethernet PCI Express 1659' if=enp1s0 drv=tg3 unused=igb_uio Active

0000:02:00.0 'NetXtreme BCM5721 Gigabit Ethernet PCI Express 1659' if=enp2s0 drv=tg3 unused=igb_uio

0000:06:00.1 'I350 Gigabit Network Connection 1521' if=enp6s0f1 drv=igb unused=igb_uio

No 'Crypto' devices detected

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

No 'Eventdev' devices detected

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

No 'Mempool' devices detected

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

No 'Compress' devices detected

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

After running sudo ./build/helloworld -l 0,1 -n 1, the error Illegal instruction still appears.

BR,

Felipe

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/sdnfv/openNetVM/issues/255#issuecomment-683461303, or unsubscribe https://github.com/notifications/unsubscribe-auth/AH3EIZRFEHYWKAA4BRUGCILSDKTBJANCNFSM4QPSYQ2A .

felipeary91 commented 3 years ago

Hi @dennisafa,

I followed the instructions in "Make and test openNetVM" section, but when running the manager ./onvm/go.sh 0,1,2 1 0xF8 -s stdout I get the following error:

./onvm/go.sh: line 122: 1863 Illegal instruction sudo "$SCRIPTPATH"/onvm_mgr/"$RTE_TARGET"/onvm_mgr -l "$cpu" -n 4 --proc-type=primary ${virt_addr} -- -p ${ports} -n ${nf_cores} ${num_srvc} ${def_srvc} ${stats} ${stats_sleep_time} ${verbosity_level} ${ttl} ${packet_limit} ${shared_cpu_flag}

And without the manager I cannot run any of the examples...

BR, Felipe

dennisafa commented 3 years ago

@felipeay91 Hmm it doesn't look like the I350 cards are supported either? I can't find them in the supported hardware link I sent you earlier.

Disregard that. You may need to chat with DPDK on this one. Sorry!

twood02 commented 3 years ago

I believe the DPDK Helloworld application shouldn't try to use any NICs, so I would expect it to work no matter what. Can you give the full output from running sudo ./helloworld ?

Are you in a special environment like a VM or container? What OS distribution and kernel version? Hopefully the DPDK list will respond, but we'll do our best to help.

felipeary91 commented 3 years ago

Hi,

Thanks for your responses @dennisafa @twood02 . I'm trying to install DPDK in "bare metal", so directly on a server with no VM involved. The server runs Bionic Beaver as shown below:

NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.5 LTS"
VERSION_ID="18.04"

And the Kernel version is:

Linux felipe-thesis 4.15.0-112-lowlatency #113-Ubuntu SMP PREEMPT Fri Jul 10 00:19:23 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

The output of sudo ./helloworld is just Illegal instruction.

twood02 commented 3 years ago

It sounds like this can happen if you haven't compiled for the right architecture. See https://software.intel.com/content/www/us/en/develop/articles/cross-compile-data-plane-development-kit-dpdk-for-different-intel-platforms.html

We have always run on Intel CPUs but I see you are in AMD. AMD is supposed to be supported, but maybe the arch needs to be set differently.

twood02 commented 3 years ago

Please re-open if you are still having issues with this.