mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 13:22:23 +00:00
slub: Add statistics for the case that the current slab does not match the node
Slub reloads the per cpu slab if the page does not satisfy the NUMA condition. Track those reloads since doing so has a performance impact. Signed-off-by: Christoph Lameter <cl@linux.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
parent
fc59c05306
commit
e36a2652d7
@ -24,6 +24,7 @@ enum stat_item {
|
||||
ALLOC_FROM_PARTIAL, /* Cpu slab acquired from partial list */
|
||||
ALLOC_SLAB, /* Cpu slab acquired from page allocator */
|
||||
ALLOC_REFILL, /* Refill cpu slab from slab freelist */
|
||||
ALLOC_NODE_MISMATCH, /* Switching cpu slab */
|
||||
FREE_SLAB, /* Slab freed to the page allocator */
|
||||
CPUSLAB_FLUSH, /* Abandoning of the cpu slab */
|
||||
DEACTIVATE_FULL, /* Cpu slab was full when deactivated */
|
||||
|
@ -1966,6 +1966,7 @@ static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
|
||||
goto new_slab;
|
||||
|
||||
if (unlikely(!node_match(c, node))) {
|
||||
stat(s, ALLOC_NODE_MISMATCH);
|
||||
deactivate_slab(s, c);
|
||||
goto new_slab;
|
||||
}
|
||||
@ -4671,6 +4672,7 @@ STAT_ATTR(FREE_REMOVE_PARTIAL, free_remove_partial);
|
||||
STAT_ATTR(ALLOC_FROM_PARTIAL, alloc_from_partial);
|
||||
STAT_ATTR(ALLOC_SLAB, alloc_slab);
|
||||
STAT_ATTR(ALLOC_REFILL, alloc_refill);
|
||||
STAT_ATTR(ALLOC_NODE_MISMATCH, alloc_node_mismatch);
|
||||
STAT_ATTR(FREE_SLAB, free_slab);
|
||||
STAT_ATTR(CPUSLAB_FLUSH, cpuslab_flush);
|
||||
STAT_ATTR(DEACTIVATE_FULL, deactivate_full);
|
||||
@ -4730,6 +4732,7 @@ static struct attribute *slab_attrs[] = {
|
||||
&alloc_from_partial_attr.attr,
|
||||
&alloc_slab_attr.attr,
|
||||
&alloc_refill_attr.attr,
|
||||
&alloc_node_mismatch_attr.attr,
|
||||
&free_slab_attr.attr,
|
||||
&cpuslab_flush_attr.attr,
|
||||
&deactivate_full_attr.attr,
|
||||
|
Loading…
Reference in New Issue
Block a user