Loading services/core/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -227,6 +227,7 @@ java_library_static { "connectivity_flags_lib", "dreams_flags_lib", "aconfig_new_storage_flags_lib", "powerstats_flags_lib", ], javac_shard_size: 50, javacflags: [ Loading services/core/java/com/android/server/powerstats/Android.bp 0 → 100644 +11 −0 Original line number Diff line number Diff line aconfig_declarations { name: "powerstats_flags", package: "com.android.server.powerstats", container: "system", srcs: ["*.aconfig"], } java_aconfig_library { name: "powerstats_flags_lib", aconfig_declarations: "powerstats_flags", } services/core/java/com/android/server/powerstats/TimerTrigger.java +35 −17 Original line number Diff line number Diff line Loading @@ -16,8 +16,10 @@ package com.android.server.powerstats; import android.app.AlarmManager; import android.content.Context; import android.os.Handler; import android.os.SystemClock; import android.util.Slog; /** Loading @@ -33,37 +35,53 @@ public final class TimerTrigger extends PowerStatsLogTrigger { private static final long LOG_PERIOD_MS_HIGH_FREQUENCY = 2 * 60 * 1000; // 2 minutes private final Handler mHandler; private final AlarmManager mAlarmManager; class PeriodicTimer implements Runnable, AlarmManager.OnAlarmListener { private final String mName; private final long mPeriodMs; private final int mMsgType; PeriodicTimer(String name, long periodMs, int msgType) { mName = name; mPeriodMs = periodMs; mMsgType = msgType; } private Runnable mLogDataLowFrequency = new Runnable() { @Override public void run() { // Do not wake the device for these messages. Opportunistically log rail data every // LOG_PERIOD_MS_LOW_FREQUENCY. mHandler.postDelayed(mLogDataLowFrequency, LOG_PERIOD_MS_LOW_FREQUENCY); if (DEBUG) Slog.d(TAG, "Received delayed message. Log rail data low frequency"); logPowerStatsData(PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE_LOW_FREQUENCY); public void onAlarm() { run(); } }; private Runnable mLogDataHighFrequency = new Runnable() { @Override public void run() { // Do not wake the device for these messages. Opportunistically log rail data every // LOG_PERIOD_MS_HIGH_FREQUENCY. mHandler.postDelayed(mLogDataHighFrequency, LOG_PERIOD_MS_HIGH_FREQUENCY); if (DEBUG) Slog.d(TAG, "Received delayed message. Log rail data high frequency"); logPowerStatsData(PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE_HIGH_FREQUENCY); if (Flags.alarmBasedPowerstatsLogging()) { final long nextAlarmMs = SystemClock.elapsedRealtime() + mPeriodMs; mAlarmManager.set(AlarmManager.ELAPSED_REALTIME, nextAlarmMs, AlarmManager.WINDOW_EXACT, 0, mName, this, mHandler, null); } else { mHandler.postDelayed(this, mPeriodMs); } if (DEBUG) Slog.d(TAG, "Received delayed message (" + mName + "). Logging rail data"); logPowerStatsData(mMsgType); } } }; public TimerTrigger(Context context, PowerStatsLogger powerStatsLogger, boolean triggerEnabled) { super(context, powerStatsLogger); mHandler = mContext.getMainThreadHandler(); mAlarmManager = mContext.getSystemService(AlarmManager.class); if (triggerEnabled) { mLogDataLowFrequency.run(); mLogDataHighFrequency.run(); final PeriodicTimer logDataLowFrequency = new PeriodicTimer("PowerStatsLowFreqLog", LOG_PERIOD_MS_LOW_FREQUENCY, PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE_LOW_FREQUENCY); final PeriodicTimer logDataHighFrequency = new PeriodicTimer("PowerStatsHighFreqLog", LOG_PERIOD_MS_HIGH_FREQUENCY, PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE_HIGH_FREQUENCY); logDataLowFrequency.run(); logDataHighFrequency.run(); } } } services/core/java/com/android/server/powerstats/flags.aconfig 0 → 100644 +13 −0 Original line number Diff line number Diff line package: "com.android.server.powerstats" container: "system" flag { name: "alarm_based_powerstats_logging" namespace: "backstage_power" description: "Utilize new OomAdjuster implementation" bug: "294598168" metadata { purpose: PURPOSE_BUGFIX } } No newline at end of file Loading
services/core/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -227,6 +227,7 @@ java_library_static { "connectivity_flags_lib", "dreams_flags_lib", "aconfig_new_storage_flags_lib", "powerstats_flags_lib", ], javac_shard_size: 50, javacflags: [ Loading
services/core/java/com/android/server/powerstats/Android.bp 0 → 100644 +11 −0 Original line number Diff line number Diff line aconfig_declarations { name: "powerstats_flags", package: "com.android.server.powerstats", container: "system", srcs: ["*.aconfig"], } java_aconfig_library { name: "powerstats_flags_lib", aconfig_declarations: "powerstats_flags", }
services/core/java/com/android/server/powerstats/TimerTrigger.java +35 −17 Original line number Diff line number Diff line Loading @@ -16,8 +16,10 @@ package com.android.server.powerstats; import android.app.AlarmManager; import android.content.Context; import android.os.Handler; import android.os.SystemClock; import android.util.Slog; /** Loading @@ -33,37 +35,53 @@ public final class TimerTrigger extends PowerStatsLogTrigger { private static final long LOG_PERIOD_MS_HIGH_FREQUENCY = 2 * 60 * 1000; // 2 minutes private final Handler mHandler; private final AlarmManager mAlarmManager; class PeriodicTimer implements Runnable, AlarmManager.OnAlarmListener { private final String mName; private final long mPeriodMs; private final int mMsgType; PeriodicTimer(String name, long periodMs, int msgType) { mName = name; mPeriodMs = periodMs; mMsgType = msgType; } private Runnable mLogDataLowFrequency = new Runnable() { @Override public void run() { // Do not wake the device for these messages. Opportunistically log rail data every // LOG_PERIOD_MS_LOW_FREQUENCY. mHandler.postDelayed(mLogDataLowFrequency, LOG_PERIOD_MS_LOW_FREQUENCY); if (DEBUG) Slog.d(TAG, "Received delayed message. Log rail data low frequency"); logPowerStatsData(PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE_LOW_FREQUENCY); public void onAlarm() { run(); } }; private Runnable mLogDataHighFrequency = new Runnable() { @Override public void run() { // Do not wake the device for these messages. Opportunistically log rail data every // LOG_PERIOD_MS_HIGH_FREQUENCY. mHandler.postDelayed(mLogDataHighFrequency, LOG_PERIOD_MS_HIGH_FREQUENCY); if (DEBUG) Slog.d(TAG, "Received delayed message. Log rail data high frequency"); logPowerStatsData(PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE_HIGH_FREQUENCY); if (Flags.alarmBasedPowerstatsLogging()) { final long nextAlarmMs = SystemClock.elapsedRealtime() + mPeriodMs; mAlarmManager.set(AlarmManager.ELAPSED_REALTIME, nextAlarmMs, AlarmManager.WINDOW_EXACT, 0, mName, this, mHandler, null); } else { mHandler.postDelayed(this, mPeriodMs); } if (DEBUG) Slog.d(TAG, "Received delayed message (" + mName + "). Logging rail data"); logPowerStatsData(mMsgType); } } }; public TimerTrigger(Context context, PowerStatsLogger powerStatsLogger, boolean triggerEnabled) { super(context, powerStatsLogger); mHandler = mContext.getMainThreadHandler(); mAlarmManager = mContext.getSystemService(AlarmManager.class); if (triggerEnabled) { mLogDataLowFrequency.run(); mLogDataHighFrequency.run(); final PeriodicTimer logDataLowFrequency = new PeriodicTimer("PowerStatsLowFreqLog", LOG_PERIOD_MS_LOW_FREQUENCY, PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE_LOW_FREQUENCY); final PeriodicTimer logDataHighFrequency = new PeriodicTimer("PowerStatsHighFreqLog", LOG_PERIOD_MS_HIGH_FREQUENCY, PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE_HIGH_FREQUENCY); logDataLowFrequency.run(); logDataHighFrequency.run(); } } }
services/core/java/com/android/server/powerstats/flags.aconfig 0 → 100644 +13 −0 Original line number Diff line number Diff line package: "com.android.server.powerstats" container: "system" flag { name: "alarm_based_powerstats_logging" namespace: "backstage_power" description: "Utilize new OomAdjuster implementation" bug: "294598168" metadata { purpose: PURPOSE_BUGFIX } } No newline at end of file