From 77c0b5a05f259ffe2eeb1ac7885b7cd33c798854 Mon Sep 17 00:00:00 2001 From: Lee George Thomas Date: Sat, 8 Jul 2023 00:28:03 +0000 Subject: [PATCH] Signal lmkd to start psi monitoring after boot. To save CPU cycles during boot for low resource device a new configuration is added to delay registration of psi monitoring until boot is complete. ActivityManagerService will send an lmkd message to start psi monitoring after boot. Bug: 288566858 Test: Build, boot and verified boot logs to confirm the behavior. Change-Id: Iee5cecdae54304b092c6a1801f3814e13a919be2 --- .../com/android/server/am/ActivityManagerService.java | 4 ++++ .../core/java/com/android/server/am/ProcessList.java | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index eb7d5c345e552..3856d2735908e 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -5061,6 +5061,10 @@ public class ActivityManagerService extends IActivityManager.Stub // Tell anyone interested that we are done booting! SystemProperties.set("sys.boot_completed", "1"); SystemProperties.set("dev.bootcomplete", "1"); + + // Start PSI monitoring in LMKD if it was skipped earlier. + ProcessList.startPsiMonitoringAfterBoot(); + mUserController.onBootComplete( new IIntentReceiver.Stub() { @Override diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index acd9771c77502..e484a6cf251bb 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -357,6 +357,7 @@ public final class ProcessList { static final byte LMK_UPDATE_PROPS = 7; static final byte LMK_KILL_OCCURRED = 8; // Msg to subscribed clients on kill occurred event static final byte LMK_STATE_CHANGED = 9; // Msg to subscribed clients on state changed + static final byte LMK_START_MONITORING = 9; // Start monitoring if delayed earlier // Low Memory Killer Daemon command codes. // These must be kept in sync with async_event_type definitions in lmkd.h @@ -1568,6 +1569,15 @@ public final class ProcessList { return true; } + /** + * {@hide} + */ + public static void startPsiMonitoringAfterBoot() { + ByteBuffer buf = ByteBuffer.allocate(4); + buf.putInt(LMK_START_MONITORING); + writeLmkd(buf, null); + } + private static boolean writeLmkd(ByteBuffer buf, ByteBuffer repl) { if (!sLmkdConnection.isConnected()) { // try to connect immediately and then keep retrying