From 48848903055c20268252a5121228b8fd94f1f9d5 Mon Sep 17 00:00:00 2001 From: Ioannis Ilkos Date: Thu, 18 Feb 2021 19:53:33 +0000 Subject: [PATCH] Log killed process swap size We already log the rss size for the process. Given lmkd strategies also consider low swap, it will be beneficial to record the swap size too. Test: build, manual test Change-Id: I923f733f7a3aa77fc5968827693b0fc085819174 --- event.logtags | 2 +- lmkd.cpp | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/event.logtags b/event.logtags index fcbb960..c31e99d 100644 --- a/event.logtags +++ b/event.logtags @@ -35,4 +35,4 @@ # TODO: generate ".java" and ".h" files with integer constants from this file. # for killinfo logs -10195355 killinfo (Pid|1|5),(Uid|1|5),(OomAdj|1),(MinOomAdj|1),(TaskSize|1),(enum kill_reasons|1|5),(MemFree|1),(Cached|1),(SwapCached|1),(Buffers|1),(Shmem|1),(Unevictable|1),(SwapTotal|1),(SwapFree|1),(ActiveAnon|1),(InactiveAnon|1),(ActiveFile|1),(InactiveFile|1),(SReclaimable|1),(SUnreclaim|1),(KernelStack|1),(PageTables|1),(IonHeap|1),(IonHeapPool|1),(CmaFree|1),(MsSinceEvent|1),(MsSincePrevWakeup|1),(WakeupsSinceEvent|1),(SkippedWakeups|1) +10195355 killinfo (Pid|1|5),(Uid|1|5),(OomAdj|1),(MinOomAdj|1),(TaskSize|1),(TaskSwapSize|1),(enum kill_reasons|1|5),(MemFree|1),(Cached|1),(SwapCached|1),(Buffers|1),(Shmem|1),(Unevictable|1),(SwapTotal|1),(SwapFree|1),(ActiveAnon|1),(InactiveAnon|1),(ActiveFile|1),(InactiveFile|1),(SReclaimable|1),(SUnreclaim|1),(KernelStack|1),(PageTables|1),(IonHeap|1),(IonHeapPool|1),(CmaFree|1),(MsSinceEvent|1),(MsSincePrevWakeup|1),(WakeupsSinceEvent|1),(SkippedWakeups|1) diff --git a/lmkd.cpp b/lmkd.cpp index 6c97757..f286e5a 100644 --- a/lmkd.cpp +++ b/lmkd.cpp @@ -1865,7 +1865,7 @@ static void record_wakeup_time(struct timespec *tm, enum wakeup_reason reason, } static void killinfo_log(struct proc* procp, int min_oom_score, int rss_kb, - int kill_reason, union meminfo *mi, + int swap_kb, int kill_reason, union meminfo *mi, struct wakeup_info *wi, struct timespec *tm) { /* log process information */ android_log_write_int32(ctx, procp->pid); @@ -1873,6 +1873,7 @@ static void killinfo_log(struct proc* procp, int min_oom_score, int rss_kb, android_log_write_int32(ctx, procp->oomadj); android_log_write_int32(ctx, min_oom_score); android_log_write_int32(ctx, (int32_t)min(rss_kb, INT32_MAX)); + android_log_write_int32(ctx, (int32_t)min(swap_kb, INT32_MAX)); android_log_write_int32(ctx, kill_reason); /* log meminfo fields */ @@ -2120,14 +2121,14 @@ static int kill_one_process(struct proc* procp, int min_oom_score, enum kill_rea inc_killcnt(procp->oomadj); - killinfo_log(procp, min_oom_score, rss_kb, kill_reason, mi, wi, tm); + killinfo_log(procp, min_oom_score, rss_kb, swap_kb, kill_reason, mi, wi, tm); if (kill_desc) { - ALOGI("Kill '%s' (%d), uid %d, oom_score_adj %d to free %" PRId64 "kB; reason: %s", - taskname, pid, uid, procp->oomadj, rss_kb, kill_desc); + ALOGI("Kill '%s' (%d), uid %d, oom_score_adj %d to free %" PRId64 "kB rss, %" PRId64 + "kB swap; reason: %s", taskname, pid, uid, procp->oomadj, rss_kb, swap_kb, kill_desc); } else { - ALOGI("Kill '%s' (%d), uid %d, oom_score_adj %d to free %" PRId64 "kB", taskname, pid, - uid, procp->oomadj, rss_kb); + ALOGI("Kill '%s' (%d), uid %d, oom_score_adj %d to free %" PRId64 "kB rss, %" PRId64 + "kb swap", taskname, pid, uid, procp->oomadj, rss_kb, swap_kb); } kill_st.uid = static_cast(uid);