On 4/10/23 20:45, Han Zhou wrote: > > > On Wed, Apr 5, 2023 at 12:50 PM Ilya Maximets <[email protected] > <mailto:[email protected]>> wrote: >> >> On 4/5/23 21:48, Ilya Maximets wrote: >> > This patch set covers removal of expressions which are subsets of other >> > wider expressions. This allows to avoid flow explosion in case of >> > negative matches. More details are in commit messages. >> > >> > Version 2: >> > * Became a patch set. >> > * Added tests and missing bitmap.h include. >> > * Code switched to work with bitwise maskable fields only (ORDINAL). >> > * Added a new patch to combine smaller expressions into wider ones. >> > * Added a patch to fix a crash uncovered with expression aggregation. >> > >> > Version 3: >> > * Dropped patch 3 for performance reasons for now, because it doesn't >> > allow to make use of I-P in many cases. >> > * Patch 1 re-worked to not cause performance issues for normal >> > address sets generated in OVN. >> > * Performance of the patch 1 significantly improved by not perfroming >> > a full n^2 search and not comparing huge empty parts of subvalues. >> > The patch became a bit less straightforward, but I hope it's still >> > fairly readable. >> > >> > Version 4: >> > * Added extra comments. >> > * Added ACK from Han to patch 2. >> > * Re-worked path shortening (next[]) to track the last non-NULL entry. >> > * Restricted superset optmization to expressions that do not track >> > address sets. To preserve ability to use I-P. [Han] > > Thanks Ilya. Ideally the restriction can be more relaxed to allow merging for > expr resulted from negation on address sets, because address set I-P doesn't > support negation anyway and it would be expensive without merging for > supersets. But I think the current approach should be fine because from what > I can tell it is less common to apply negation on address sets. This can be > improved further if needed.
I think, this should already work, because expansion of "!=" expression will loose the address set reference anyway during simplification in expr_simplify_ne(). > > So, I went ahead and applied the series to main. Thanks! Best regards, Ilya Maximets. > > Regards, > Han > >> Forgot to add: >> >> * Fixed the memset value: s/0xf/0xff/. [Han] >> >> > >> > Ilya Maximets (2): >> > expr: Remove supersets from OR expressions. >> > expr: Avoid crash if all sub-expressions crushed down to 'true'. >> > >> > include/ovn/expr.h | 1 + >> > lib/expr.c | 255 +++++++++++++++++++++++++++++++++++---------- >> > tests/ovn.at <http://ovn.at> | 12 +++ >> > 3 files changed, 212 insertions(+), 56 deletions(-) >> > >> _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
