[ovs-dev] criteria/benchmarks for an improved userspace datapath classifier?
michal.orsak at gmail.com
Tue Jul 2 21:03:04 UTC 2019
On 02/07/2019 19:43, Ian Stokes wrote:
> On 7/2/2019 6:00 PM, Ben Pfaff wrote:
>> Hi Ilya and Ian. Please allow me to introduce Michal Orsak, a grad
>> student currently looking at packet classifiers. He's implemented a
>> novel classifier that is faster than the one already in OVS in the
>> benchmarks that he's run. His classifier is tree-based, like most
>> high-performance classifiers, but also incremental so that flows can be
>> inserted and deleted individually without undue delay. Ultimately, it
>> might make sense to replace the OVS userspace datapath classifier by one
>> based on the concepts that he's come up with.
> Thanks for the introduction Ben. I wasn't aware of Michals work. The
> timing is quite apt as currently I've been looking at Harrys (CCd)
> approach to improving performance for the current DPCLS.
> I was hoping to have this approach in place for OVS 2.12 as there's
> been ongoing testing/reviews across the community with general
> improvements of ~ 15% or more for both x86 and ARM architectures which
> looks promising.
> I'd be interested in seeing Michals proposals if there are patches
> available that would be great.
Now I am implementing the DPCLS API so we can test the thing. There are
also some differences and problems like:
* support for priority of the rules
* only single matching rule
* my limited knowledge of DPCLS
>> A difficulty with classifiers, however, is coming up with an appropriate
>> set of benchmarks to compare them fairly. The userspace datapath
>> focuses on performance, so do you have a set of benchmarks that you
>> recommend for comparison? Are there other criteria that would be
>> important (besides correctness)?
> Agreed, that's something we've been looking for feedback on from the
> community to date. Most testing we have seen have been performance
There are so many corner cases... Any test is appreciated.
> The areas I think that would be good to measure would be flow
> addition/flow deletion overhead in CPU cycles. Also memory and time
> complexity comparisons for existing and proposed techniques might be
> nice to see.
Currently I do have comparison with OVS TSS, DPDK librte_acl,
PartitionSort, HyperSplit, HyperCuts and few others. (C based
benchmarks. Some of them not optimized implementations. Originally for
devel. of hardware based classifier.). All previously mentioned except
TSS do have worst case complexities from the same class. However it is
more complicated as it depends on size of the matching field and other
factors which have different meanings between algs. I do not have
understandable and short definitions yet.
>> (I'd take answers from anyone, not just Ian and Ilya!)
More information about the dev