> On Sep 12, 2022, at 4:17 PM, Ilya Maximets <i.maxim...@ovn.org> wrote: > > On 6/24/22 22:01, Ilya Maximets wrote: >> On 6/16/22 16:07, Jon Kohler wrote: >>> >>> >>>> On Jun 3, 2022, at 1:00 PM, Ilya Maximets <i.maxim...@ovn.org> wrote: >>>> >>>> On 6/3/22 16:47, Jon Kohler wrote: >>>>> >>>>> >>>>>> On Jun 2, 2022, at 5:50 PM, Ilya Maximets <i.maxim...@ovn.org> wrote: >>>>>> >>>>>> On 6/2/22 23:13, Jon Kohler wrote: >>>>>>> Any takers? I’m hoping I’ve got the right mailing list, as I did see >>>>>>> the thread get generated on the mailing list website? >>>>>> >>>>>> Hey, Jon. >>>>>> >>>>>> Yes, it's the right mailing list, though ovs-dev and dev are >>>>>> the same thing, so you don't need to send to both. >>>>>> >>>>>> For the subject, you sent a patch just about a week ago. >>>>>> Unfortunately, patches are not moving that fast. People >>>>>> are busy with working on issues and doing reviews of other >>>>>> patches, so please, be patient. >>>>>> >>>>>> Just from the patches received last month we still have >>>>>> about 60 under review right now. You can see them in the >>>>>> patchwork here: >>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__patchwork.ozlabs.org_project_openvswitch_list_&d=DwIDaQ&c=s883GpUCOChKOHiocYtGcg&r=NGPRGGo37mQiSXgHKm5rCQ&m=8oqFH3XK_nAzOxdHmUuHbWgSEPemwCFQKUdGExfEPEx3NfR3ioDpK5CZHwMdEyf_&s=Osr7hGzYKATNpHa9IvtWygokIFsGsmT4GrnDuUQ3FzY&e= >>>>>> >>>>>> >>>>>> And as you can see we have much older patches too. So, it >>>>>> will take some time until someone will get to yours. >>>>>> >>>>>> Best regards, Ilya Maximets. >>>>> >>>>> Thanks for the feedback and pointers. My apologies, I wasn’t trying to be >>>>> ansty :) this is my first patch to this mailing list and wanted to make >>>>> sure it >>>>> was going to the right place. >>>> >>>> No problem. :) >>>> >>>>> >>>>> Ok no problems, I can fully empathize with patch review backlogs :) No >>>>> specific rush on this one. Nice CPU win whenever someone can get >>>>> to it, but would definitely rather have quality over speed to make sure >>>>> we haven’t missed anything! :) >>>> >>>> Thanks for working on improvements! I hope, someone will get >>>> to this patch in the near future as it looks interesting indeed. >>> >>> Hey all, checking back on this one, its been a couple weeks and >>> figured I’d reach out as I saw some release work happen on the >>> mailing list recently, and hoping that may have freed up some cycles? >>> >>> Also, forgive the silly question, I’m not sure what this mailing lists >>> preference >>> is on touchpoint like this, or if it is better to do a resend on the patch >>> instead? Didn’t want to do that in case it was frowned upon. >> >> No need to re-send. Just a ping is enough, unless the patch >> needs a significant re-work due to other changes. If the patch >> in in the patchwork, it can be picked up. Things are not moving >> very fast around here... >> >>> >>> As mentioned, no specific rush on this one, just my first patch to OVS >>> and want to make sure I’m doing right by the list. >> >> No problem. >> >> For the patch itself: The code looks correct to me, see some >> minor comments below. >> >> Best regards, Ilya Maximets. >> >>> >>> Thanks again, >>> Jon >>> >>>> >>>>> >>>>> Cheers, >>>>> Jon >>>>> >>>>>> >>>>>>> >>>>>>>> On May 31, 2022, at 10:03 AM, Jon Kohler <j...@nutanix.com> wrote: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> On May 26, 2022, at 9:11 PM, Jon Kohler <j...@nutanix.com> wrote: >>>>>>>>> >>>>>>>>> For netdev_linux_update_via_netlink(), hint to the kernel that >>>>>>>>> we do not need it to gather netlink internal stats when we want >>>>>>>>> to update the netlink flags, as those stats are not rendered >>>>>>>>> within OVS. >>>>>>>>> >>>>>>>>> Background: >>>>>>>>> ovs-vswitchd can spend quite a bit of time blocked by the kernel >>>>>>>>> during netlink calls, especially systems with many cores. This >>>>>>>>> time is dominated by the kernel-side internal stats gathering >>>>>>>>> mechanism in netlink, specifically: >>>>>>>>> inet6_fill_link_af >>>>>>>>> inet6_fill_ifla6_attrs >>>>>>>>> __snmp6_fill_stats64 >>>>>>>>> >>>>>>>>> In Linux 4.4+, there exists a hint for netlink requests to not >>>>>>>>> trigger the ipv6 stats gathering mechanism, which greatly reduces >>>>>>>>> the amount of time that ovs-vswitchd is on CPU. >>>>>>>>> >>>>>>>>> Testing and Results: >>>>>>>>> Tested booting 320 VM's and measuring OVS utilization with perf >>>>>>>>> record, then visualized into a flamegraph using a patched version >>>>>>>>> of ovs 2.14.2. Calls under bridge_run() seem to get hit the worst >>>>>>>>> by this issue. >>>>>>>>> >>>>>>>>> Before bridge_run() == 11.3% of samples >>>>>>>>> After bridge_run() == 3.4% of samples >>>>>>>>> >>>>>>>>> Note that there are at least two observed netlink calls under >>>>>>>>> bridge_run that are still kernel stats heavy after this patch: >>>>>>>>> >>>>>>>>> Call 1: >>>>>>>>> bridge_run -> netdev_run -> route_table_run -> route_table_reset -> >>>>>>>>> ovs_router_insert -> ovs_router_insert__ -> get_src_addr -> >>>>>>>>> netdev_ger_addr_list -> netdev_linux_get_addr_list -> getifaddrs >>>>>>>>> >>>>>>>>> Since the actual netlink call is coming from getifaddrs() in glibc, >>>>>>>>> fixing would likely involve either duplicating glibc code in ovs >>>>>>>>> source or patch glibc. >>>>>>>>> >>>>>>>>> Call 2: >>>>>>>>> bridge_run -> iface_refresh_stats -> netdev_get_stats -> >>>>>>>>> netdev_linux_get_stats -> get_stats_via_netlink >>>>>>>>> >>>>>>>>> This does use netlink based stats; however, it isn't immediately >>>>>>>>> clear if just dropping the stats from inet6_fill_link_af would >>>>>>>>> impact anything or not. Given this call is more intermittent, its >>>>>>>>> of lesser concern. >>>>>>>>> >>>>>>>>> Signed-off-by: Jon Kohler <j...@nutanix.com> >>>>>>>>> Acked-by: Greg Smith <gasm...@nutanix.com> >>>>>>>> >>>>>>>> Gentle bump >>>>>>> >>>>>>> >>>>>>> >>>>>>>> >>>>>>>>> --- >>>>>>>>> lib/netdev-linux.c | 9 +++++++++ >>>>>>>>> 1 file changed, 9 insertions(+) >>>>>>>>> >>>>>>>>> diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c >>>>>>>>> index 2766b3f2bf..f0246d3b2b 100644 >>>>>>>>> --- a/lib/netdev-linux.c >>>>>>>>> +++ b/lib/netdev-linux.c >>>>>>>>> @@ -247,6 +247,12 @@ enum { >>>>>>>>> VALID_NUMA_ID = 1 << 8, >>>>>>>>> }; >>>>>>>>> >>>>>>>>> +/* Linux 4.4 introduced the ability to skip the internal stats >>>>>>>>> gathering >>>>>>>>> + * that netlink does via an external filter mask that can be passed >>>>>>>>> into >>>>>>>>> + * a netlink request. >>>>>>>>> + */ >>>>>>>>> +#define RTEXT_FILTER_SKIP_STATS (1 << 3) >> >> Please, don't use tabs. :) >> Also, we should, probably, avoid re-defining the value if it >> was already defined in kernel uAPI headers. So, it's better >> to guard with #ifndef as we do for other similar definitions. > > There is no reason to hold this patch, so I made above changes > myself and applied the fix. Also backported down to 2.17 since > it seems fairly important. > > Thanks! > > Best regards, Ilya Maximets.
Thanks! Sorry I dropped off the face of the earth for a while, My mother got very sick this summer, so many, many things have slipped by over the last few months. I really appreciate the assist in getting this done! Cheers, Jon PS - if anyone happens to be at the Open Source summit, I’ve included this as part of the talk I’m giving at KVM forum tomorrow. _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev