Skip to content

Commit 9e332a7

Browse files
committed
Add kernel memory allocations to bugreport
Add the contents of /proc/allocinfo to the bugreport. This file shows the current snapshot of all the memory allocated and the number of allocations associated with kernel code locations. The collection and processing of /proc/allocinfo is done by calling the alloctop tool, to return the top entries that allocated most memory. The kernel memory allocations entry is added to the bugreport only if the /proc/allocinfo file exists. As shown below, a rough measurement of the execution time of this command on Cuttlefish shows an average of ~43 ms. On the same device, the total number of characters generated by the command is 6704, so ~6.6 KiB uncompressed. ``` vsoc_x86_64:/ # time for i in $(seq 1 1000); do alloctop --once --sort s --min 1 --lines 100 > /dev/null done 0m42.25s real 0m00.17s user 0m03.63s system vsoc_x86_64:/ # alloctop --once --sort s --min 1 --lines 100 | wc -c 6704 ``` Bug: 384777823 Test: adb shell dumpstate Change-Id: Ib8f7eeebe5ad88fc608e2d84582ad32e1b069985 Signed-off-by: Alessio Balsini <balsini@google.com>
1 parent f408a47 commit 9e332a7

2 files changed

Lines changed: 12 additions & 0 deletions

File tree

cmds/dumpstate/Android.bp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ cc_binary {
128128
"main.cpp",
129129
],
130130
required: [
131+
"alloctop",
131132
"atrace",
132133
"bugreport_procdump",
133134
"dmabuf_dump",

cmds/dumpstate/dumpstate.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1257,6 +1257,15 @@ static void DumpIpAddrAndRules() {
12571257
RunCommand("IP RULES v6", {"ip", "-6", "rule", "show"});
12581258
}
12591259

1260+
static void DumpKernelMemoryAllocations() {
1261+
if (!access("/proc/allocinfo", F_OK)) {
1262+
// Print the top 100 biggest memory allocations of at least one byte.
1263+
// The output is sorted by size, descending.
1264+
RunCommand("KERNEL MEMORY ALLOCATIONS",
1265+
{"alloctop", "--once", "--sort", "s", "--min", "1", "--lines", "100"});
1266+
}
1267+
}
1268+
12601269
static Dumpstate::RunStatus RunDumpsysTextByPriority(const std::string& title, int priority,
12611270
std::chrono::milliseconds timeout,
12621271
std::chrono::milliseconds service_timeout) {
@@ -1766,6 +1775,8 @@ Dumpstate::RunStatus Dumpstate::dumpstate() {
17661775

17671776
DoKmsg();
17681777

1778+
DumpKernelMemoryAllocations();
1779+
17691780
DumpShutdownCheckpoints();
17701781

17711782
DumpIpAddrAndRules();

0 commit comments

Comments
 (0)