if SLUB is configured, kmem -S will display per-cpu data. This patch
will hide data of offline cpu.
The original output is like below:
<cut>
crash> kmem -S
...
CPU 1 KMEM_CACHE_CPU:
ffff88003fc97360
CPU 1 SLAB:
SLAB MEMORY NODE TOTAL ALLOCATED FREE
ffffea0000dc0d40 ffff880037035000 0 16 11 5
FREE / [ALLOCATED]
[ffff880037035000]
[ffff880037035100]
...
[ffff88003c6e0f00]
CPU 2 KMEM_CACHE_CPU:
ffff88003fd17360
CPU 2 SLAB:
(empty)
CPU 2 PARTIAL:
(empty)
CPU 3 KMEM_CACHE_CPU:
ffff88003fd97360
CPU 3 SLAB:
SLAB MEMORY NODE TOTAL ALLOCATED FREE
ffffea0000ed8f80 ffff88003b63e000 0 16 13 3
FREE / [ALLOCATED]
[ffff88003b63e000]
...
<cut>
With data of offline cpu(cpu #2) hiden, the output is like below:
<cut>
crash> kmem -S
...
CPU 1 KMEM_CACHE_CPU:
ffff88003fc97360
CPU 1 SLAB:
SLAB MEMORY NODE TOTAL ALLOCATED FREE
ffffea0000dc0d40 ffff880037035000 0 16 11 5
FREE / [ALLOCATED]
[ffff880037035000]
[ffff880037035100]
...
[ffff88003c6e0f00]
CPU 2 <OFFLINE>
CPU 3 KMEM_CACHE_CPU:
ffff88003fd97360
CPU 3 SLAB:
SLAB MEMORY NODE TOTAL ALLOCATED FREE
ffffea0000ed8f80 ffff88003b63e000 0 16 13 3
FREE / [ALLOCATED]
[ffff88003b63e000]
...
<cut>
Signed-off-by: Qiao Nuohan <qiaonuohan(a)cn.fujitsu.com>
---
memory.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/memory.c b/memory.c
index 6b7289b..10fa273 100755
--- a/memory.c
+++ b/memory.c
@@ -17466,6 +17466,11 @@ do_kmem_cache_slub(struct meminfo *si)
per_cpu = (ulong *)GETBUF(sizeof(ulong) * vt->numnodes);
for (i = 0; i < kt->cpus; i++) {
+ if (hide_offline_cpu(i)) {
+ fprintf(fp, "CPU %d <OFFLINE>\n", i);
+ continue;
+ }
+
cpu_slab_ptr = ULONG(si->cache_buf + OFFSET(kmem_cache_cpu_slab)) +
kt->__per_cpu_offset[i];
fprintf(fp, "CPU %d KMEM_CACHE_CPU:\n %lx\n", i, cpu_slab_ptr);
--
1.8.5.3