slub: use raw_cpu_inc for incrementing statistics
Statistics are not critical to the operation of the allocation but should also not cause too much overhead. When __this_cpu_inc is altered to check if preemption is disabled this triggers. Use raw_cpu_inc to avoid the checks. Using this_cpu_ops may cause interrupt disable/enable sequences on various arches which may significantly impact allocator performance. [akpm@linux-foundation.org: add comment] Signed-off-by: Christoph Lameter <cl@linux.com> Cc: Fengguang Wu <fengguang.wu@intel.com> Cc: Pekka Enberg <penberg@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
3ed66e910c
commit
88da03a676
|
@ -224,7 +224,11 @@ static inline void memcg_propagate_slab_attrs(struct kmem_cache *s) { }
|
||||||
static inline void stat(const struct kmem_cache *s, enum stat_item si)
|
static inline void stat(const struct kmem_cache *s, enum stat_item si)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_SLUB_STATS
|
#ifdef CONFIG_SLUB_STATS
|
||||||
__this_cpu_inc(s->cpu_slab->stat[si]);
|
/*
|
||||||
|
* The rmw is racy on a preemptible kernel but this is acceptable, so
|
||||||
|
* avoid this_cpu_add()'s irq-disable overhead.
|
||||||
|
*/
|
||||||
|
raw_cpu_inc(s->cpu_slab->stat[si]);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue