Skip to contentSkip to conversation

What is the best way to distribute a DPDK-based app?

DISCUSSION Vlad Zolotarov 3 participants 4 messages Jan 11, 2015 – Jan 12, 2015 2 messages not in the archive

lore
Share & tools
lore
#0 lore raw

Hi,
guys could you share form your experience what is the best way to distribute the DPDK libraries with the DPDK-based app:

* Is there any significant benefit in compiling the libraries on a target machine?
* Is there an already existing DPDK-libs packaging: I've noticed there is some Fedora RPM package with DPDK libs but it's lacking pmd-driver's libs and they are the main component we are using, therefore we can't use it.

Thanks in advance,
vlad

A message that is not in the archive (sent off-list or not yet received): 54B2AE86.3050203-RmZWMc9puTNJc61us3aD9laTQe2KTcn/@public.gmane.org

#2 lore raw
Quoted 11 lines · Vlad Zolotarov

Hi,
guys could you share form your experience what is the best way to distribute the DPDK libraries with the DPDK-based app:

* Is there any significant benefit in compiling the libraries on a target machine?
* Is there an already existing DPDK-libs packaging: I've noticed there is some Fedora RPM package with DPDK libs but it's lacking pmd-driver's libs and they are the main component we are using, therefore we can't use it.

Quoted 3 lines

Thanks in advance,
vlad

The default in DPDK is to build a statically linked binary, in which case no separate distribution of libraries is necessary. This also gives best performance.

If you know ahead of time what the minimum cpu hardware of your target is, it's probably worthwhile doing a compile of your app/libs for that minimum hardware, especially if you care about getting best performance. If a few percent drop in performance is not a big issue, then compiling up for the "default" target is the safest path to take.
For distributing the libs as shared libs, the same logic applies.

/Bruce

#3 lore raw
Quoted 12 lines · Bruce Richardson
Quoted 11 lines · Vlad Zolotarov

Hi,
guys could you share form your experience what is the best way to distribute the DPDK libraries with the DPDK-based app:

* Is there any significant benefit in compiling the libraries on a target machine?
* Is there an already existing DPDK-libs packaging: I've noticed there is some Fedora RPM package with DPDK libs but it's lacking pmd-driver's libs and they are the main component we are using, therefore we can't use it.

Quoted 6 lines
Quoted 3 lines

Thanks in advance,
vlad

The default in DPDK is to build a statically linked binary, in which case no separate distribution of libraries is necessary. This also gives best performance.

That wasn't the question though. the question was "what is the best way to distribute dpdk libraries". The answer is, it depends on a number of factors, including, but not limited to what distribution your are distributing for and what your intended audience is.

As you note, Fedora distributes dpdk 1.7 using DSO's. We do this because Fedora strongly tries to avoid shipping static libraries so as to prevent security issues living on in applications that link to libraries (i.e. a dpdk security fix will update all applications if they use DSO's.

You've also noted that the Fedora DPDK doesn't include PMD's for several bits of hardware. This is done because those PMD's require out of tree kernel modules, which Fedora prohibits. So we currently only ship virtual pmd's. That will change soon though we hope, when some high speed socket API changes get made to the kernel.

Quoted 9 lines

If you know ahead of time what the minimum cpu hardware of your target is, it's probably worthwhile doing a compile of your app/libs for that minimum hardware, especially if you care about getting best performance. If a few percent drop in performance is not a big issue, then compiling up for the "default" target is the safest path to take.
For distributing the libs as shared libs, the same logic applies.

/Bruce

A message that is not in the archive (sent off-list or not yet received): 20150112145026.GB23467-B26myB8xz7F8NnZeBjwnZQMhkBWG/[email protected]

#5 lore raw
Quoted 29 lines · Neil Horman
Quoted 12 lines · Bruce Richardson
Quoted 11 lines · Vlad Zolotarov

Hi,
guys could you share form your experience what is the best way to distribute the DPDK libraries with the DPDK-based app:

* Is there any significant benefit in compiling the libraries on a target machine?
* Is there an already existing DPDK-libs packaging: I've noticed there is some Fedora RPM package with DPDK libs but it's lacking pmd-driver's libs and they are the main component we are using, therefore we can't use it.

Quoted 6 lines
Quoted 3 lines

Thanks in advance,
vlad

The default in DPDK is to build a statically linked binary, in which case no separate distribution of libraries is necessary. This also gives best performance.

That wasn't the question though. the question was "what is the best way to distribute dpdk libraries". The answer is, it depends on a number of factors, including, but not limited to what distribution your are distributing for and what your intended audience is.

As you note, Fedora distributes dpdk 1.7 using DSO's. We do this because Fedora strongly tries to avoid shipping static libraries so as to prevent security issues living on in applications that link to libraries (i.e. a dpdk security fix will update all applications if they use DSO's.

Quoted 5 lines

You've also noted that the Fedora DPDK doesn't include PMD's for several bits of hardware. This is done because those PMD's require out of tree kernel modules, which Fedora prohibits. So we currently only ship virtual pmd's. That will change soon though we hope, when some high speed socket API changes get made to the kernel.

Neil, Bruce, thanks for your input.

Quoted 10 lines
Quoted 10 lines

If you know ahead of time what the minimum cpu hardware of your target is, it's probably worthwhile doing a compile of your app/libs for that minimum hardware, especially if you care about getting best performance. If a few percent drop in performance is not a big issue, then compiling up for the "default" target is the safest path to take.
For distributing the libs as shared libs, the same logic applies.

/Bruce