LVS
lvs-devel
Google
 
Web LinuxVirtualServer.org

Re: Long delay on estimation_timer causes packet latency

To: Julian Anastasov <ja@xxxxxx>
Subject: Re: Long delay on estimation_timer causes packet latency
Cc: horms@xxxxxxxxxxxx, netdev@xxxxxxxxxxxxxxx, lvs-devel@xxxxxxxxxxxxxxx, Yunhong Jiang <yunhjiang@xxxxxxxx>
From: yunhong-cgl jiang <xintian1976@xxxxxxxxx>
Date: Fri, 17 Apr 2020 09:56:06 -0700
Thanks for reply.

Yes, our patch changes the est_list to a RCU list. Will do more testing and 
send out the patch.

Thanks
—Yunhong


> On Apr 17, 2020, at 12:47 AM, Julian Anastasov <ja@xxxxxx> wrote:
> 
> 
>       Hello,
> 
> On Thu, 16 Apr 2020, yunhong-cgl jiang wrote:
> 
>> Hi, Simon & Julian,
>>      We noticed that on our kubernetes node utilizing IPVS, the 
>> estimation_timer() takes very long (>200sm as shown below). Such long delay 
>> on timer softirq causes long packet latency.  
>> 
>>          <idle>-0     [007] dNH. 25652945.670814: softirq_raise: vec=1 
>> [action=TIMER]
>> .....
>>          <idle>-0     [007] .Ns. 25652945.992273: softirq_exit: vec=1 
>> [action=TIMER]
>> 
>>      The long latency is caused by the big service number (>50k) and large 
>> CPU number (>80 CPUs),
>> 
>>      We tried to move the timer function into a kernel thread so that it 
>> will not block the system and seems solves our problem. Is this the right 
>> direction? If yes, we will do more testing and send out the RFC patch. If 
>> not, can you give us some suggestion?
> 
>       Using kernel thread is a good idea. For this to work, we can
> also remove the est_lock and to use RCU for est_list.
> The writers ip_vs_start_estimator() and ip_vs_stop_estimator() already
> run under common mutex __ip_vs_mutex, so they not need any
> synchronization. We need _bh lock usage in estimation_timer().
> Let me know if you need any help with the patch.
> 
> Regards
> 
> --
> Julian Anastasov <ja@xxxxxx>


<Prev in Thread] Current Thread [Next in Thread>