Re: osv-dpdk modern implementation?

72 views
Skip to first unread message
Message has been deleted

Waldek Kozaczuk

unread,
Jul 8, 2021, 12:18:29 AM7/8/21
to OSv Development
Hi,

It looks like the dpdk repo got renamed. Also, there are some changes I need to make it build with new GCC. 

I am working on a patch to make it build. I hope to have it soon ready.

Waldek

On Thursday, July 1, 2021 at 2:18:55 PM UTC-4 Sergio Inzunza wrote:
Hello everyone,

I hope everyone is doing great. I was looking into the dpdk-example app, but I am not able to build the image. I see it was last updated 6 years ago and the implementation doesn't work with the latest kernel. I was wondering if anyone has worked in integrating the latest dpdk with OSv. If not does anyone have any suggestions in how to use the tool chain to have a dpdk application integrated. Any help would be greatly appreciated. Thank you all so much in advance.

Thanks,
Sergio Inzunza
Message has been deleted
Message has been deleted

Waldek Kozaczuk

unread,
Jul 9, 2021, 6:10:03 PM7/9/21
to Sergio Inzunza, sy...@scylladb.com, OSv Development
Hi,

I have just pushed a patch that makes dpdk-example build (I have tested it on Fedora 33 with gcc 10). The simple "./scripts/run.py -n" seems to work.

./scripts/run.py -n

OSv v0.55.0-295-g371ff15c

Booted up in 168.79 ms

Cmdline: /test -c f -n 1 --no-shconf

EAL: Detected lcore 0 as core 0 on socket 0

EAL: Detected lcore 1 as core 1 on socket 0

EAL: Detected lcore 2 as core 2 on socket 0

EAL: Detected lcore 3 as core 3 on socket 0

EAL: Support maximum 128 logical core(s) by configuration.

EAL: Detected 4 lcore(s)

EAL:    bar0 not available

EAL:    bar0 not available

EAL:    bar0 not available

EAL:    bar0 not available

EAL:    bar0 not available

EAL: PCI scan found 4 devices

EAL: Setting up memory...

EAL: Mapped memory segment 0 @ 0xffff80007da00000: physaddr:0x7da00000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff80007b800000: physaddr:0x7b800000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800079600000: physaddr:0x79600000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800077400000: physaddr:0x77400000, len 33554432

EAL: TSC frequency is ~77 KHz

EAL: Master lcore 0 is ready (tid=1142360;cpuset=[0])

PMD: ENICPMD trace: rte_enic_pmd_init

EAL: lcore 1 is ready (tid=1142380;cpuset=[1])

EAL: lcore 2 is ready (tid=1142390;cpuset=[2])

EAL: lcore 3 is ready (tid=11423a0;cpuset=[3])

APP: HPET is not enabled, using TSC as default timer

RTE>>

RTE>>


I have also tried to run another example from README.md but it gives me this error:

./scripts/run.py -n -e '--maxnic=0 /l2fwd --no-shconf -c f -n 2 --log-level 8 -m 768 -- -p 3'

OSv v0.55.0-295-g371ff15c

Booted up in 168.67 ms

Cmdline: /l2fwd --no-shconf -c f -n 2 --log-level 8 -m 768 -- -p 3

EAL: Detected lcore 0 as core 0 on socket 0

EAL: Detected lcore 1 as core 1 on socket 0

EAL: Detected lcore 2 as core 2 on socket 0

EAL: Detected lcore 3 as core 3 on socket 0

EAL: Support maximum 128 logical core(s) by configuration.

EAL: Detected 4 lcore(s)

EAL:    bar0 not available

EAL:    bar0 not available

EAL:    bar0 not available

EAL:    bar0 not available

EAL:    bar0 not available

EAL: PCI scan found 4 devices

EAL: Setting up memory...

EAL: Mapped memory segment 0 @ 0xffff80007da00000: physaddr:0x7da00000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff80007b800000: physaddr:0x7b800000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800079600000: physaddr:0x79600000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800077400000: physaddr:0x77400000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800075200000: physaddr:0x75200000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800073000000: physaddr:0x73000000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800070e00000: physaddr:0x70e00000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff80006ec00000: physaddr:0x6ec00000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff80006ca00000: physaddr:0x6ca00000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff80006a800000: physaddr:0x6a800000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800068600000: physaddr:0x68600000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800066400000: physaddr:0x66400000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800064200000: physaddr:0x64200000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800062000000: physaddr:0x62000000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff80005fe00000: physaddr:0x5fe00000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff80005dc00000: physaddr:0x5dc00000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff80005ba00000: physaddr:0x5ba00000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800059800000: physaddr:0x59800000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800057600000: physaddr:0x57600000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800055400000: physaddr:0x55400000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800053200000: physaddr:0x53200000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff800051000000: physaddr:0x51000000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff80004ee00000: physaddr:0x4ee00000, len 33554432

EAL: Mapped memory segment 0 @ 0xffff80004cc00000: physaddr:0x4cc00000, len 33554432

EAL: TSC frequency is ~77 KHz

EAL: Master lcore 0 is ready (tid=1102360;cpuset=[0])

PMD: ENICPMD trace: rte_enic_pmd_init

EAL: lcore 1 is ready (tid=1102380;cpuset=[1])

EAL: lcore 2 is ready (tid=1102390;cpuset=[2])

EAL: lcore 3 is ready (tid=11023a0;cpuset=[3])

EAL: Error - exiting with code: 1

  Cause: No Ethernet ports - bye


Unfortunately, I am not very familiar with DPDK (apart from what I read on their website so I have some clue:-)) so I do not know what the meaning of 'No Ethernet ports' really is in the context of this app.

I have added Takuya ASADA to the email thread who originally implemented this example so he might be able to help us here.

Please note that the patch mostly makes this example build with modern gcc which mostly involves disabling certain warnings by applying "modern_gcc.path" to the repo https://github.com/syuu1228/osv-dpdk which as I understand is the OSv fork of DPDK (1.8?). Ideally, we would want to make these changes upstream in that repo but I do not have access to it. Or we could clone it.

Even more, ideally, we could update this fork to the latest dpdk which probably better handles new gcc. This would require some guidance from Takuya. From my brief research it seems that most changes were to create OSv version of EAL (see https://doc.dpdk.org/guides/prog_guide/env_abstraction_layer.html) which you call see here - https://github.com/syuu1228/osv-dpdk/commits/osv-1.8.0-cleanup (the key commit, I think, is https://github.com/syuu1228/osv-dpdk/commit/9df906deeeda1d26f5a67c26408067c6246efc12 which mostly adds OSv EAL app - lib/librte_eal/osvapp/*). I think we would have to also take into account any possible changes to EAL api in new version.

I hope it helps.

Regards,
Waldek

On Thu, Jul 8, 2021 at 8:32 PM Sergio Inzunza <sinz...@ucr.edu> wrote:
Hi,

That is great to hear Waldek. I will keep an eye out for the patch. Thank you so much.

Thanks,
Sergio Inzunza

--
You received this message because you are subscribed to the Google Groups "OSv Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to osv-dev+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/b97079e7-0fd3-4517-a003-66cf10b6a09fn%40googlegroups.com.
Reply all
Reply to author
Forward
Message has been deleted
0 new messages