From b034d9ec59da75d642b327eff0cb72cd19f46099 Mon Sep 17 00:00:00 2001 From: Mat Bevilacqua Date: Wed, 6 Jan 2021 17:37:07 -0800 Subject: [PATCH] Reduce logging frequency of powerstats data Test: atest FrameworksServicesTests:PowerStatsServiceTest Bug: 176854474 Change-Id: I940213ab43c25207e9655513d8aeb05feb2b843d --- .../com/android/server/powerstats/BatteryTrigger.java | 2 +- .../server/powerstats/PowerStatsLogTrigger.java | 6 ++---- .../android/server/powerstats/PowerStatsLogger.java | 11 ++++++++--- .../com/android/server/powerstats/TimerTrigger.java | 4 ++-- .../server/powerstats/PowerStatsServiceTest.java | 11 +++++++---- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/services/core/java/com/android/server/powerstats/BatteryTrigger.java b/services/core/java/com/android/server/powerstats/BatteryTrigger.java index 6500523198baf..b35cb52d50255 100644 --- a/services/core/java/com/android/server/powerstats/BatteryTrigger.java +++ b/services/core/java/com/android/server/powerstats/BatteryTrigger.java @@ -43,7 +43,7 @@ public final class BatteryTrigger extends PowerStatsLogTrigger { if (newBatteryLevel < mBatteryLevel) { if (DEBUG) Slog.d(TAG, "Battery level dropped. Log rail data"); - logPowerStatsData(); + logPowerStatsData(PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE_BATTERY_DROP); } mBatteryLevel = newBatteryLevel; diff --git a/services/core/java/com/android/server/powerstats/PowerStatsLogTrigger.java b/services/core/java/com/android/server/powerstats/PowerStatsLogTrigger.java index 1754185ea71b5..e3672a8d09caf 100644 --- a/services/core/java/com/android/server/powerstats/PowerStatsLogTrigger.java +++ b/services/core/java/com/android/server/powerstats/PowerStatsLogTrigger.java @@ -31,10 +31,8 @@ public abstract class PowerStatsLogTrigger { protected Context mContext; private PowerStatsLogger mPowerStatsLogger; - protected void logPowerStatsData() { - Message.obtain( - mPowerStatsLogger, - PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE).sendToTarget(); + protected void logPowerStatsData(int msgType) { + Message.obtain(mPowerStatsLogger, msgType).sendToTarget(); } public PowerStatsLogTrigger(Context context, PowerStatsLogger powerStatsLogger) { diff --git a/services/core/java/com/android/server/powerstats/PowerStatsLogger.java b/services/core/java/com/android/server/powerstats/PowerStatsLogger.java index 4e86cd8ed7ae3..9ee34298a145b 100644 --- a/services/core/java/com/android/server/powerstats/PowerStatsLogger.java +++ b/services/core/java/com/android/server/powerstats/PowerStatsLogger.java @@ -52,7 +52,8 @@ import java.io.IOException; public final class PowerStatsLogger extends Handler { private static final String TAG = PowerStatsLogger.class.getSimpleName(); private static final boolean DEBUG = false; - protected static final int MSG_LOG_TO_DATA_STORAGE = 0; + protected static final int MSG_LOG_TO_DATA_STORAGE_TIMER = 0; + protected static final int MSG_LOG_TO_DATA_STORAGE_BATTERY_DROP = 1; private final PowerStatsDataStorage mPowerStatsMeterStorage; private final PowerStatsDataStorage mPowerStatsModelStorage; @@ -62,8 +63,8 @@ public final class PowerStatsLogger extends Handler { @Override public void handleMessage(Message msg) { switch (msg.what) { - case MSG_LOG_TO_DATA_STORAGE: - if (DEBUG) Slog.d(TAG, "Logging to data storage"); + case MSG_LOG_TO_DATA_STORAGE_TIMER: + if (DEBUG) Slog.d(TAG, "Logging to data storage on timer"); // Log power meter data. EnergyMeasurement[] energyMeasurements = @@ -78,6 +79,10 @@ public final class PowerStatsLogger extends Handler { mPowerStatsModelStorage.write( EnergyConsumerResultUtils.getProtoBytes(energyConsumerResults)); if (DEBUG) EnergyConsumerResultUtils.print(energyConsumerResults); + break; + + case MSG_LOG_TO_DATA_STORAGE_BATTERY_DROP: + if (DEBUG) Slog.d(TAG, "Logging to data storage on battery drop"); // Log state residency data. StateResidencyResult[] stateResidencyResults = diff --git a/services/core/java/com/android/server/powerstats/TimerTrigger.java b/services/core/java/com/android/server/powerstats/TimerTrigger.java index 4b59295528561..7cba00f9a6697 100644 --- a/services/core/java/com/android/server/powerstats/TimerTrigger.java +++ b/services/core/java/com/android/server/powerstats/TimerTrigger.java @@ -29,7 +29,7 @@ public final class TimerTrigger extends PowerStatsLogTrigger { private static final String TAG = TimerTrigger.class.getSimpleName(); private static final boolean DEBUG = false; // TODO(b/166689029): Make configurable through global settings. - private static final long LOG_PERIOD_MS = 60 * 1000; + private static final long LOG_PERIOD_MS = 120 * 1000; private final Handler mHandler; @@ -40,7 +40,7 @@ public final class TimerTrigger extends PowerStatsLogTrigger { // LOG_PERIOD_MS. mHandler.postDelayed(mLogData, LOG_PERIOD_MS); if (DEBUG) Slog.d(TAG, "Received delayed message. Log rail data"); - logPowerStatsData(); + logPowerStatsData(PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE_TIMER); } }; diff --git a/services/tests/servicestests/src/com/android/server/powerstats/PowerStatsServiceTest.java b/services/tests/servicestests/src/com/android/server/powerstats/PowerStatsServiceTest.java index 9fe3c0da1b1d9..5f654406812f9 100644 --- a/services/tests/servicestests/src/com/android/server/powerstats/PowerStatsServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/powerstats/PowerStatsServiceTest.java @@ -78,6 +78,7 @@ public class PowerStatsServiceTest { private PowerStatsService mService; private File mDataStorageDir; private TimerTrigger mTimerTrigger; + private BatteryTrigger mBatteryTrigger; private PowerStatsLogger mPowerStatsLogger; private final PowerStatsService.Injector mInjector = new PowerStatsService.Injector() { @@ -125,7 +126,9 @@ public class PowerStatsServiceTest { @Override BatteryTrigger createBatteryTrigger(Context context, PowerStatsLogger powerStatsLogger) { - return new BatteryTrigger(context, powerStatsLogger, false /* trigger enabled */); + mBatteryTrigger = new BatteryTrigger(context, powerStatsLogger, + false /* trigger enabled */); + return mBatteryTrigger; } @Override @@ -237,7 +240,7 @@ public class PowerStatsServiceTest { mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED); // Write data to on-device storage. - mTimerTrigger.logPowerStatsData(); + mTimerTrigger.logPowerStatsData(PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE_TIMER); // The above call puts a message on a handler. Wait for // it to be processed. @@ -278,7 +281,7 @@ public class PowerStatsServiceTest { mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED); // Write data to on-device storage. - mTimerTrigger.logPowerStatsData(); + mTimerTrigger.logPowerStatsData(PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE_TIMER); // The above call puts a message on a handler. Wait for // it to be processed. @@ -318,7 +321,7 @@ public class PowerStatsServiceTest { mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED); // Write data to on-device storage. - mTimerTrigger.logPowerStatsData(); + mBatteryTrigger.logPowerStatsData(PowerStatsLogger.MSG_LOG_TO_DATA_STORAGE_BATTERY_DROP); // The above call puts a message on a handler. Wait for // it to be processed.