Message ID | 1519402362.55655.70.camel@gmail.com |
---|---|
State | Not Applicable, archived |
Delegated to: | David Miller |
Headers | show |
Series | percpu: add a schedule point in pcpu_balance_workfn() | expand |
On Fri, Feb 23, 2018 at 08:12:42AM -0800, Eric Dumazet wrote: > From: Eric Dumazet <edumazet@google.com> > > When a large BPF percpu map is destroyed, I have seen > pcpu_balance_workfn() holding cpu for hundreds of milliseconds. > > On KASAN config and 112 hyperthreads, average time to destroy a chunk > is ~4 ms. > > [ 2489.841376] destroy chunk 1 in 4148689 ns > ... > [ 2490.093428] destroy chunk 32 in 4072718 ns > > Signed-off-by: Eric Dumazet <edumazet@google.com> Applied to percpu/for-4.16-fixes. Thank, Eric.
diff --git a/mm/percpu.c b/mm/percpu.c index 50e7fdf84055151d8c7e8bb220f7a73e96b7f3e4..d40dfb597ffce2656220257f0227219ab917135b 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -1600,6 +1600,7 @@ static void pcpu_balance_workfn(struct work_struct *work) spin_unlock_irq(&pcpu_lock); } pcpu_destroy_chunk(chunk); + cond_resched(); } /*