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
This commit is contained in:
Ioannis Ilkos 2021-02-18 19:53:33 +00:00
parent 74b4df95b4
commit 4884890305
2 changed files with 8 additions and 7 deletions

View File

@ -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)

View File

@ -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<int32_t>(uid);