mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
tools/cgroup/slabinfo.py: updated to work on current kernel
[ Upstream commit 1974c45dd7 ]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
a7c37332af
commit
6995512a47
@@ -128,9 +128,9 @@ def detect_kernel_config():
|
|||||||
|
|
||||||
cfg['nr_nodes'] = prog['nr_online_nodes'].value_()
|
cfg['nr_nodes'] = prog['nr_online_nodes'].value_()
|
||||||
|
|
||||||
if prog.type('struct kmem_cache').members[1][1] == 'flags':
|
if prog.type('struct kmem_cache').members[1].name == 'flags':
|
||||||
cfg['allocator'] = 'SLUB'
|
cfg['allocator'] = 'SLUB'
|
||||||
elif prog.type('struct kmem_cache').members[1][1] == 'batchcount':
|
elif prog.type('struct kmem_cache').members[1].name == 'batchcount':
|
||||||
cfg['allocator'] = 'SLAB'
|
cfg['allocator'] = 'SLAB'
|
||||||
else:
|
else:
|
||||||
err('Can\'t determine the slab allocator')
|
err('Can\'t determine the slab allocator')
|
||||||
@@ -193,7 +193,7 @@ def main():
|
|||||||
# look over all slab pages, belonging to non-root memcgs
|
# look over all slab pages, belonging to non-root memcgs
|
||||||
# and look for objects belonging to the given memory cgroup
|
# and look for objects belonging to the given memory cgroup
|
||||||
for page in for_each_slab_page(prog):
|
for page in for_each_slab_page(prog):
|
||||||
objcg_vec_raw = page.obj_cgroups.value_()
|
objcg_vec_raw = page.memcg_data.value_()
|
||||||
if objcg_vec_raw == 0:
|
if objcg_vec_raw == 0:
|
||||||
continue
|
continue
|
||||||
cache = page.slab_cache
|
cache = page.slab_cache
|
||||||
@@ -202,7 +202,7 @@ def main():
|
|||||||
addr = cache.value_()
|
addr = cache.value_()
|
||||||
caches[addr] = cache
|
caches[addr] = cache
|
||||||
# clear the lowest bit to get the true obj_cgroups
|
# clear the lowest bit to get the true obj_cgroups
|
||||||
objcg_vec = Object(prog, page.obj_cgroups.type_,
|
objcg_vec = Object(prog, 'struct obj_cgroup **',
|
||||||
value=objcg_vec_raw & ~1)
|
value=objcg_vec_raw & ~1)
|
||||||
|
|
||||||
if addr not in stats:
|
if addr not in stats:
|
||||||
|
|||||||
Reference in New Issue
Block a user