Skip to content

Commit 1974c45

Browse files
vaverintorvalds
authored andcommitted
tools/cgroup/slabinfo.py: updated to work on current kernel
slabinfo.py script does not work with actual kernel version. First, it was unable to recognise SLUB susbsytem, and when I specified it manually it failed again with AttributeError: 'struct page' has no member 'obj_cgroups' .. and then again with File "tools/cgroup/memcg_slabinfo.py", line 221, in main memcg.kmem_caches.address_of_(), AttributeError: 'struct mem_cgroup' has no member 'kmem_caches' Link: https://lkml.kernel.org/r/cec1a75e-43b4-3d64-2084-d9f98fda037f@virtuozzo.com Signed-off-by: Vasily Averin <vvs@virtuozzo.com> Tested-by: Roman Gushchin <guro@fb.com> Acked-by: Roman Gushchin <guro@fb.com> Cc: Michal Hocko <mhocko@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent ed98b01 commit 1974c45

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

tools/cgroup/memcg_slabinfo.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,9 @@ def detect_kernel_config():
128128

129129
cfg['nr_nodes'] = prog['nr_online_nodes'].value_()
130130

131-
if prog.type('struct kmem_cache').members[1][1] == 'flags':
131+
if prog.type('struct kmem_cache').members[1].name == 'flags':
132132
cfg['allocator'] = 'SLUB'
133-
elif prog.type('struct kmem_cache').members[1][1] == 'batchcount':
133+
elif prog.type('struct kmem_cache').members[1].name == 'batchcount':
134134
cfg['allocator'] = 'SLAB'
135135
else:
136136
err('Can\'t determine the slab allocator')
@@ -193,7 +193,7 @@ def main():
193193
# look over all slab pages, belonging to non-root memcgs
194194
# and look for objects belonging to the given memory cgroup
195195
for page in for_each_slab_page(prog):
196-
objcg_vec_raw = page.obj_cgroups.value_()
196+
objcg_vec_raw = page.memcg_data.value_()
197197
if objcg_vec_raw == 0:
198198
continue
199199
cache = page.slab_cache
@@ -202,7 +202,7 @@ def main():
202202
addr = cache.value_()
203203
caches[addr] = cache
204204
# clear the lowest bit to get the true obj_cgroups
205-
objcg_vec = Object(prog, page.obj_cgroups.type_,
205+
objcg_vec = Object(prog, 'struct obj_cgroup **',
206206
value=objcg_vec_raw & ~1)
207207

208208
if addr not in stats:

0 commit comments

Comments
 (0)