On Wed, 3 Mar 2021, Matthew Wilcox wrote: > On Tue, Mar 02, 2021 at 10:14:53AM +0100, Christoph Lameter wrote: > > On Mon, 10 Aug 2020, Xunlei Pang wrote: > > > - atomic_long_t partial_free_objs; > > > + atomic_long_t __percpu *partial_free_objs; > > > > A percpu counter is never atomic. Just use unsigned long and use this_cpu > > operations for this thing. That should cut down further on the overhead. > > What about allocations from interrupt context? Should this be a local_t > instead? Can this be allocated in an interrupt context? And I am not sure how local_t relates to that? Percpu counters can be used in an interrupt context without the overhead of the address calculations that are required by a local_t.