I would like the DPDK community to change its view on compile time options. 
Here is why:

 

Application specific performance micro-optimizations like "fast mbuf free" and 
"mbuf direct re-arm" are being added to DPDK and presented as features.

 

They are not features, but optimizations, and I don't understand the need for 
them to be available at run-time!

 

Instead of adding a bunch of exotic exceptions to the fast path of the PMDs, 
they should be compile time options. This will improve performance by avoiding 
branches in the fast path, both for the applications using them, and for 
generic applications (where the exotic code is omitted).

 

Please note that I am only talking about the performance optimizations that are 
limited to application specific use cases. I think it makes sense to require 
that performance optimizing an application also requires recompiling the 
performance critical libraries used by it.

 

Allowing compile time options for application specific performance 
optimizations in DPDK would also open a path for other optimizations, which can 
only be achieved at compile time, such as "no fragmented packets", "no attached 
mbufs" and "single mbuf pool". And even more exotic optimizations, such as the 
"indexed mempool cache", which was rejected due to ABI violations - they could 
be marked as "risky and untested" or similar, but still be part of the DPDK 
main repository.

 

 

Med venlig hilsen / Kind regards,

-Morten Brørup

 

Reply via email to