> On Fri, Feb 16, 2018 at 05:10:29PM +0100, Jakub Sitnicki wrote:
>> Ben,
>>
>> On Wed, Feb 14, 2018 at 09:54 PM GMT, Ben Pfaff wrote:
>> > Jakub Sitnicki demonstrated that repeatedly calculating row hashes is
>> > expensive, so this should improve ovn-northd performance.
>> >
>> > Reported-by: Jakub Sitnicki <[email protected]>
>> > Reported-at: 
>> > https://mail.openvswitch.org/pipermail/ovs-dev/2018-February/344404.html
>> > Signed-off-by: Ben Pfaff <[email protected]>
>> > ---
>> >  ovn/lib/ovn-sb-idl.ann  | 20 ++++++++++++++++++++
>> >  ovn/lib/ovn-util.c      | 27 +++++++++++++++++++++++++++
>> >  ovn/lib/ovn-util.h      |  7 +++++++
>> >  ovn/northd/ovn-northd.c | 28 +++++++++++++++++-----------
>> >  4 files changed, 71 insertions(+), 11 deletions(-)
>> >
>>
>> With this series applied the total of CPU cycles consumed by northd and
>> the per-function profile changes dramatically when running a simple
>> benchmark of creating 15 lswitches, 100 lports per each lswitch.
>>
>> `perf stat` for ovn-northd looks like so:
>>
>> before:
>>
>>  Performance counter stats for process id '7091':
>>
>>       85263.043641      task-clock (msec)         #    0.843 CPUs utilized
>>              9,859      context-switches          #    0.116 K/sec
>>                575      cpu-migrations            #    0.007 K/sec
>>              2,243      page-faults               #    0.026 K/sec
>>    225,663,620,029      cycles                    #    2.647 GHz
>>    302,290,105,647      instructions              #    1.34  insn per cycle
>>     53,556,381,940      branches                  #  628.131 M/sec
>>        435,374,510      branch-misses             #    0.81% of all branches
>>
>>      101.202109604 seconds time elapsed
>>
>> after:
>>
>>  Performance counter stats for process id '25306':
>>
>>       50362.124282      task-clock (msec)         #    0.474 CPUs utilized
>>              5,120      context-switches          #    0.102 K/sec
>>              1,025      cpu-migrations            #    0.020 K/sec
>>              9,546      page-faults               #    0.190 K/sec
>>    134,756,308,237      cycles                    #    2.676 GHz
>>    154,810,279,583      instructions              #    1.15  insn per cycle
>>     27,350,003,179      branches                  #  543.067 M/sec
>>        216,219,142      branch-misses             #    0.79% of all branches
>>
>>      106.207558198 seconds time elapsed
>>
>> CPU time spent in ovn_lflow_find becomes insignificant (<0.1%) after the
>> changes, so instead let's look at the total cycles spent processing NBDB
>> contents:
>>
>>   Children      Self  Command     Shared Object       Symbol
>> before:
>>     75.95%     0.01%  ovn-northd  ovn-northd          [.] ovnnb_db_run
>> after:
>>      8.55%     0.02%  ovn-northd  ovn-northd          [.] ovnnb_db_run
>>
>> Honestly, I am not sure where the huge boost comes from. I need to read
>> through the changes more closely. Feel free to add my:
>>
>> Tested-by: Jakub Sitnicki <[email protected]>
>
> Thanks a lot for the testing.  Please do feel free to continue reading
> the patch series.  I am also surprised that there was so much impact--I
> guess that hashing text strings is really expensive!
>
> Thanks,
>
> Ben.
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Hi Ben,

working on automatic test support for OVN ACL reject action I
discovered this commit breaks some ovn.at tests.
In particular:
- 2371: ovn -- dns lookup : 1 HV, 2 LS, 2 LSPs/LS
- 2374: ovn -- 1 LR with distributed router gateway port

I run git bisect on the current master branch (commit 430d7d156).
Numan reproduced same issues.
I guess they are probably timing issues

Regards,
Lorenzo
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to