>> >> I did some testing with my patch and these are the findings >> >> | Avg. Poll Intervals | Total >> test time | northd RSS >> ------------------------------ +------------------------+--------------- >> Last week | 1.5 seconds | 1005 seconds >> | 2.5 GB >> This week | 6 seconds | 2246 seconds >> | 8.5 GB >> Ilya's Patch | 2.5 seconds | 1170 seconds >> | 3.1 GB >> Numan's patch (run1) | 1.6 seconds | 992 seconds | 2.43 GB >> Numan's patch (run2) | 1.7 seconds | 1022 seconds | 2.43 GB >> >> Seems like removing dp ref cnt all together is more efficient and very close >> to >> last week's results. >> >> I'll submit the patch tomorrow after some more testing. >> >> Feel free to provide any review comments or feedback if you've any. >> >> Thanks >> Numan >> >> > > >> > > Regarding the cluster density 500 node test with Ilya's fix, I think >> > > this seems o.k to me since >> > > the test falls back to recompute a lot and there is some cost now with >> > > the lflow I-P patches. >> > > This can be improved by adding port group I-P. I can start looking >> > > into the port-group I-P if you >> > > think it would be worth it. Let me know. >> > > >> > >> > Adding more I-P would be helpful, but it still doesn't explain the >> > observation from Ilya regarding the 66% increase in recompute time and 25% >> > increase in memory. My test cases couldn't reproduce such significant >> > increases (it is ~10-20% in my test). I think we'd better figure out what >> > caused such big increases - is it still related to ref count or is it >> > something else. I think the lflow_ref might have contributed to it, >> > especially the use of hmap instead of list. It is totally fine if the >> > lflow_ref adds some cost, which is required for the I-P to work, but it is >> > better to understand where the cost comes from and justify it (or optimize >> > it). >> >> Looks like from my patch results, dp_ref_cnt is contributing to this >> increase. >> Is it possible for you to trigger another test with my patch - >> https://github.com/numansiddique/ovn/commit/92f6563d9e7b1e6c8f2b924dea7a220781e10a05 >> >> <https://github.com/numansiddique/ovn/commit/92f6563d9e7b1e6c8f2b924dea7a220781e10a05> >> > It is great to see that removing ref count resolved the performance gap. The > test result is actually very interesting. I also had a test with more LBs > (10k instead of the earlier 1k) in the large LBG, trying to make the cost of > bitmap scan more obvious, but still, the difference between your patch and > Ilya's patch is not significant in my test. The latency difference is within > 5%, and the memory <1%. So I wonder why in the ovn-heater test it is so > different. Is it possible that in the ovn-heater test it does create a lot of > duplicated lflows so ref count hmap operations are actually triggered for a > significant amount of times, which might have contributed to the major cost > even with Ilya's patch, and with your patch it means it fall back to > recompute much more often?
FWIW, in my testing with the cluster-density 500node database there are 12 M refcounts allocated. With 32 bytes each, it's about 370 MB of RAM. We should also add a fair share of allocation overhead since we're allocating a huge number of very small objects. Numan also gets rid of all the space allocated for hash maps that hold all these refcounts, and these were taking ~25% of all allocations. Getting rid of these allocations likely saves a lot of CPU cycles as well, since they are very heavy. P.S. Almost all of these 12M refcounts are for: build_lrouter_defrag_flows_for_lb():ovn_lflow_add_with_dp_group() All of these have refcount == 3. There is one with refcount 502: build_egress_delivery_flows_for_lrouter_port():ovn_lflow_add_default_drop() And there are 500-ish with refcount of 2: build_lswitch_rport_arp_req_flow():ovn_lflow_add_with_hint() Best regards, Ilya Maximets. _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev