[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <c637d176-d3c8-4b3c-8b64-7c1813bcd5fc@gmail.com>
Date: Mon, 4 Mar 2024 19:20:03 -0800
From: Kui-Feng Lee <sinquersw@...il.com>
To: David Ahern <dsahern@...nel.org>, Jakub Kicinski <kuba@...nel.org>
Cc: Kui-Feng Lee <thinker.li@...il.com>, netdev@...r.kernel.org,
ast@...nel.org, martin.lau@...ux.dev, kernel-team@...a.com,
davem@...emloft.net, kuifeng@...a.com
Subject: Re: [PATCH net-next] selftests/net: force synchronized GC for a test.
On 3/4/24 18:49, David Ahern wrote:
> On 3/4/24 7:41 PM, David Ahern wrote:
>> On 3/4/24 8:44 AM, Jakub Kicinski wrote:
>>> On Fri, 1 Mar 2024 16:45:58 -0800 Kui-Feng Lee wrote:
>>>> However, some extra waiting may be added to it.
>>>> There are two possible extra waiting. The first one is calling
>>>> round_jiffies() in fib6_run_gc(), that may add 750ms at most. The second
>>>> one is the granularity of waiting for 5 seconds (in our case) is 512ms
>>>> for HZ 1000 according to the comment at the very begin of timer.c.
>>>> In fact, it can add 392ms for 5750ms (5000ms + 750ms). Overall, they may
>>>> contribute up to 1144ms.
>>>>
>>>> Does that make sense?
>>>>
>>>> Debug build is slower. So, the test scripts will be slower than normal
>>>> build. That means the script is actually waiting longer with a debug build.
>>>
>>> Meaning bumping the wait to $((($EXPIRE + 1) * 2))
>>> should be enough for the non-debug runner?
>>
>> I have not had time to do a deep a dive on the timing, but it seems odd
>> to me that a 1 second timer can turn into 11 sec. That means for 10
>> seconds (10x the time the user requested) the route survived.
>
> Also, you added a direct call to ipv6_sysctl_rtcache_flush to force a
> flush which is going to try to kick off gc at that moment. Is the delay
> kicking in?
>
> delay = net->ipv6.sysctl.flush_delay;
The delay doesn't cause any different here. The delay affects only
exceptions.
It doesn't 10x. It does 2 times.
In fib_tests.sh
sysctl -wq net.ipv6.route.gc_interval= $EXPIRE
The test sets the gc interval to 5 seconds.
The test install several routes in a round. So, some later routes may
miss the first GC that emitted after the first 5 seconds. These routes
have to wait for 5 more seconds for the next time GC. So, it is 10
seconds. However, due to calling round_jiffies() in fib6_run_gc(), the
waiting time of the second GC period can be longer. It could increase
750ms at most. And, due to the granularity of the timer, it can adds
another 512ms at the range 4s~32s.
Powered by blists - more mailing lists