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.

> 
> 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)
>>>>> +
>>>>> /* Use one for the packet buffer and another for the aux buffer to receive
>>>>> * TSO packets. */
>>>>> #define IOV_STD_SIZE 1
>>>>> @@ -6418,6 +6424,9 @@ netdev_linux_update_via_netlink(struct netdev_linux 
>>>>> *netdev)
>>>>>   if (netdev_linux_netnsid_is_remote(netdev)) {
>>>>>       nl_msg_put_u32(&request, IFLA_IF_NETNSID, netdev->netnsid);
>>>>>   }
>>>>> +
>>>>> +    nl_msg_put_u32(&request, IFLA_EXT_MASK, RTEXT_FILTER_SKIP_STATS);
>>>>> +
>>>>>   error = nl_transact(NETLINK_ROUTE, &request, &reply);
>>>>>   ofpbuf_uninit(&request);
>>>>>   if (error) {
>>>>> -- 
>>>>> 2.30.1 (Apple Git-130)
>>>
>>> _______________________________________________
>>> dev mailing list
>>> d...@openvswitch.org
>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwIDaQ&c=s883GpUCOChKOHiocYtGcg&r=NGPRGGo37mQiSXgHKm5rCQ&m=8oqFH3XK_nAzOxdHmUuHbWgSEPemwCFQKUdGExfEPEx3NfR3ioDpK5CZHwMdEyf_&s=h-hQ3onb9ZZoJwMrpOdPVN0uZVoTPJtZ8ZHFKTCknZ0&e=
> 

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to