Loading apex/jobscheduler/service/java/com/android/server/tare/Agent.java +21 −3 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import static com.android.server.tare.EconomicPolicy.eventToString; import static com.android.server.tare.EconomicPolicy.getEventType; import static com.android.server.tare.TareUtils.appToString; import static com.android.server.tare.TareUtils.getCurrentTimeMillis; import static com.android.server.tare.TareUtils.narcToString; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -81,6 +80,8 @@ class Agent { * to use older transactions or provide older transactions to apps. */ private static final long MAX_TRANSACTION_AGE_MS = 24 * HOUR_IN_MILLIS; /** The maximum number of transactions to dump per ledger. */ private static final int MAX_NUM_TRANSACTION_DUMP = 25; private static final String ALARM_TAG_AFFORDABILITY_CHECK = "*tare.affordability_check*"; private static final String ALARM_TAG_LEDGER_CLEANUP = "*tare.ledger_cleanup*"; Loading Loading @@ -193,6 +194,12 @@ class Agent { return balance; } /** Returns the total amount of narcs currently allocated to apps. */ @GuardedBy("mLock") long getCurrentCirculationLocked() { return mCurrentNarcsInCirculation; } @GuardedBy("mLock") void noteInstantaneousEventLocked(final int userId, @NonNull final String pkgName, final int eventId, @Nullable String tag) { Loading Loading @@ -1287,8 +1294,19 @@ class Agent { @GuardedBy("mLock") void dumpLocked(IndentingPrintWriter pw) { pw.print("Current GDP: "); pw.println(narcToString(mCurrentNarcsInCirculation)); pw.println("Ledgers:"); pw.increaseIndent(); mLedgers.forEach((userId, pkgName, ledger) -> { pw.print(appToString(userId, pkgName)); if (mIrs.isSystem(userId, pkgName)) { pw.print(" (system)"); } pw.println(); pw.increaseIndent(); ledger.dump(pw, MAX_NUM_TRANSACTION_DUMP); pw.decreaseIndent(); }); pw.decreaseIndent(); pw.println(); mBalanceThresholdAlarmListener.dumpLocked(pw); Loading apex/jobscheduler/service/java/com/android/server/tare/AlarmManagerEconomicPolicy.java +19 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ import android.os.Handler; import android.os.UserHandle; import android.provider.Settings; import android.util.KeyValueListParser; import android.util.IndentingPrintWriter; import android.util.Slog; import android.util.SparseArray; Loading Loading @@ -361,4 +362,22 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy { TARE_ALARM_MANAGER_CONSTANTS)); } } @Override void dump(IndentingPrintWriter pw) { pw.println("Actions:"); pw.increaseIndent(); for (int i = 0; i < mActions.size(); ++i) { dumpAction(pw, mActions.valueAt(i)); } pw.decreaseIndent(); pw.println(); pw.println("Rewards:"); pw.increaseIndent(); for (int i = 0; i < mRewards.size(); ++i) { dumpReward(pw, mRewards.valueAt(i)); } pw.decreaseIndent(); } } apex/jobscheduler/service/java/com/android/server/tare/CompleteEconomicPolicy.java +30 −0 Original line number Diff line number Diff line Loading @@ -148,5 +148,35 @@ public class CompleteEconomicPolicy extends EconomicPolicy { @Override void dump(IndentingPrintWriter pw) { dumpActiveModifiers(pw); pw.println(); pw.println(getClass().getSimpleName() + ":"); pw.increaseIndent(); pw.println("Cached actions:"); pw.increaseIndent(); for (int i = 0; i < mActions.size(); ++i) { dumpAction(pw, mActions.valueAt(i)); } pw.decreaseIndent(); pw.println(); pw.println("Cached rewards:"); pw.increaseIndent(); for (int i = 0; i < mRewards.size(); ++i) { dumpReward(pw, mRewards.valueAt(i)); } pw.decreaseIndent(); for (int i = 0; i < mEnabledEconomicPolicies.size(); i++) { final EconomicPolicy economicPolicy = mEnabledEconomicPolicies.valueAt(i); pw.println(); pw.print("(Includes) "); pw.println(economicPolicy.getClass().getSimpleName() + ":"); pw.increaseIndent(); economicPolicy.dump(pw); pw.decreaseIndent(); } pw.decreaseIndent(); } } apex/jobscheduler/service/java/com/android/server/tare/EconomicPolicy.java +23 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static com.android.server.tare.Modifier.COST_MODIFIER_DEVICE_IDLE; import static com.android.server.tare.Modifier.COST_MODIFIER_POWER_SAVE_MODE; import static com.android.server.tare.Modifier.COST_MODIFIER_PROCESS_STATE; import static com.android.server.tare.Modifier.NUM_COST_MODIFIERS; import static com.android.server.tare.TareUtils.narcToString; import android.annotation.CallSuper; import android.annotation.IntDef; Loading Loading @@ -399,4 +400,26 @@ public abstract class EconomicPolicy { pw.decreaseIndent(); } } protected static void dumpAction(IndentingPrintWriter pw, @NonNull Action action) { pw.print(actionToString(action.id)); pw.print(": "); pw.print("ctp="); pw.print(narcToString(action.costToProduce)); pw.print(", basePrice="); pw.print(narcToString(action.basePrice)); pw.println(); } protected static void dumpReward(IndentingPrintWriter pw, @NonNull Reward reward) { pw.print(rewardToString(reward.id)); pw.print(": "); pw.print("instant="); pw.print(narcToString(reward.instantReward)); pw.print(", ongoing/sec="); pw.print(narcToString(reward.ongoingRewardPerSecond)); pw.print(", maxDaily="); pw.print(narcToString(reward.maxDailyReward)); pw.println(); } } apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java +20 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.text.format.DateUtils.MINUTE_IN_MILLIS; import static com.android.server.tare.TareUtils.appToString; import static com.android.server.tare.TareUtils.getCurrentTimeMillis; import static com.android.server.tare.TareUtils.narcToString; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -601,6 +602,10 @@ public class InternalResourceService extends SystemService { if ("-h".equals(arg) || "--help".equals(arg)) { dumpHelp(pw); return; } else if ("-a".equals(arg)) { // -a is passed when dumping a bug report so we have to acknowledge the // argument. However, we currently don't do anything differently for bug // reports. } else if (arg.length() > 0 && arg.charAt(0) == '-') { pw.println("Unknown option: " + arg); return; Loading Loading @@ -787,9 +792,23 @@ public class InternalResourceService extends SystemService { pw.print("Current battery level: "); pw.println(mCurrentBatteryLevel); mCompleteEconomicPolicy.dump(pw); final long maxCircluation = getMaxCirculationLocked(); pw.print("Max circulation (current/satiated): "); pw.print(narcToString(maxCircluation)); pw.print("/"); pw.println(narcToString(mCompleteEconomicPolicy.getMaxSatiatedCirculation())); final long currentCirculation = mAgent.getCurrentCirculationLocked(); pw.print("Current GDP: "); pw.print(narcToString(currentCirculation)); pw.print(" ("); pw.print(String.format("%.2f", 100f * currentCirculation / maxCircluation)); pw.println("% of current max)"); pw.println(); mCompleteEconomicPolicy.dump(pw); pw.println(); mAgent.dumpLocked(pw); } } Loading Loading
apex/jobscheduler/service/java/com/android/server/tare/Agent.java +21 −3 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import static com.android.server.tare.EconomicPolicy.eventToString; import static com.android.server.tare.EconomicPolicy.getEventType; import static com.android.server.tare.TareUtils.appToString; import static com.android.server.tare.TareUtils.getCurrentTimeMillis; import static com.android.server.tare.TareUtils.narcToString; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -81,6 +80,8 @@ class Agent { * to use older transactions or provide older transactions to apps. */ private static final long MAX_TRANSACTION_AGE_MS = 24 * HOUR_IN_MILLIS; /** The maximum number of transactions to dump per ledger. */ private static final int MAX_NUM_TRANSACTION_DUMP = 25; private static final String ALARM_TAG_AFFORDABILITY_CHECK = "*tare.affordability_check*"; private static final String ALARM_TAG_LEDGER_CLEANUP = "*tare.ledger_cleanup*"; Loading Loading @@ -193,6 +194,12 @@ class Agent { return balance; } /** Returns the total amount of narcs currently allocated to apps. */ @GuardedBy("mLock") long getCurrentCirculationLocked() { return mCurrentNarcsInCirculation; } @GuardedBy("mLock") void noteInstantaneousEventLocked(final int userId, @NonNull final String pkgName, final int eventId, @Nullable String tag) { Loading Loading @@ -1287,8 +1294,19 @@ class Agent { @GuardedBy("mLock") void dumpLocked(IndentingPrintWriter pw) { pw.print("Current GDP: "); pw.println(narcToString(mCurrentNarcsInCirculation)); pw.println("Ledgers:"); pw.increaseIndent(); mLedgers.forEach((userId, pkgName, ledger) -> { pw.print(appToString(userId, pkgName)); if (mIrs.isSystem(userId, pkgName)) { pw.print(" (system)"); } pw.println(); pw.increaseIndent(); ledger.dump(pw, MAX_NUM_TRANSACTION_DUMP); pw.decreaseIndent(); }); pw.decreaseIndent(); pw.println(); mBalanceThresholdAlarmListener.dumpLocked(pw); Loading
apex/jobscheduler/service/java/com/android/server/tare/AlarmManagerEconomicPolicy.java +19 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ import android.os.Handler; import android.os.UserHandle; import android.provider.Settings; import android.util.KeyValueListParser; import android.util.IndentingPrintWriter; import android.util.Slog; import android.util.SparseArray; Loading Loading @@ -361,4 +362,22 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy { TARE_ALARM_MANAGER_CONSTANTS)); } } @Override void dump(IndentingPrintWriter pw) { pw.println("Actions:"); pw.increaseIndent(); for (int i = 0; i < mActions.size(); ++i) { dumpAction(pw, mActions.valueAt(i)); } pw.decreaseIndent(); pw.println(); pw.println("Rewards:"); pw.increaseIndent(); for (int i = 0; i < mRewards.size(); ++i) { dumpReward(pw, mRewards.valueAt(i)); } pw.decreaseIndent(); } }
apex/jobscheduler/service/java/com/android/server/tare/CompleteEconomicPolicy.java +30 −0 Original line number Diff line number Diff line Loading @@ -148,5 +148,35 @@ public class CompleteEconomicPolicy extends EconomicPolicy { @Override void dump(IndentingPrintWriter pw) { dumpActiveModifiers(pw); pw.println(); pw.println(getClass().getSimpleName() + ":"); pw.increaseIndent(); pw.println("Cached actions:"); pw.increaseIndent(); for (int i = 0; i < mActions.size(); ++i) { dumpAction(pw, mActions.valueAt(i)); } pw.decreaseIndent(); pw.println(); pw.println("Cached rewards:"); pw.increaseIndent(); for (int i = 0; i < mRewards.size(); ++i) { dumpReward(pw, mRewards.valueAt(i)); } pw.decreaseIndent(); for (int i = 0; i < mEnabledEconomicPolicies.size(); i++) { final EconomicPolicy economicPolicy = mEnabledEconomicPolicies.valueAt(i); pw.println(); pw.print("(Includes) "); pw.println(economicPolicy.getClass().getSimpleName() + ":"); pw.increaseIndent(); economicPolicy.dump(pw); pw.decreaseIndent(); } pw.decreaseIndent(); } }
apex/jobscheduler/service/java/com/android/server/tare/EconomicPolicy.java +23 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static com.android.server.tare.Modifier.COST_MODIFIER_DEVICE_IDLE; import static com.android.server.tare.Modifier.COST_MODIFIER_POWER_SAVE_MODE; import static com.android.server.tare.Modifier.COST_MODIFIER_PROCESS_STATE; import static com.android.server.tare.Modifier.NUM_COST_MODIFIERS; import static com.android.server.tare.TareUtils.narcToString; import android.annotation.CallSuper; import android.annotation.IntDef; Loading Loading @@ -399,4 +400,26 @@ public abstract class EconomicPolicy { pw.decreaseIndent(); } } protected static void dumpAction(IndentingPrintWriter pw, @NonNull Action action) { pw.print(actionToString(action.id)); pw.print(": "); pw.print("ctp="); pw.print(narcToString(action.costToProduce)); pw.print(", basePrice="); pw.print(narcToString(action.basePrice)); pw.println(); } protected static void dumpReward(IndentingPrintWriter pw, @NonNull Reward reward) { pw.print(rewardToString(reward.id)); pw.print(": "); pw.print("instant="); pw.print(narcToString(reward.instantReward)); pw.print(", ongoing/sec="); pw.print(narcToString(reward.ongoingRewardPerSecond)); pw.print(", maxDaily="); pw.print(narcToString(reward.maxDailyReward)); pw.println(); } }
apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java +20 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.text.format.DateUtils.MINUTE_IN_MILLIS; import static com.android.server.tare.TareUtils.appToString; import static com.android.server.tare.TareUtils.getCurrentTimeMillis; import static com.android.server.tare.TareUtils.narcToString; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -601,6 +602,10 @@ public class InternalResourceService extends SystemService { if ("-h".equals(arg) || "--help".equals(arg)) { dumpHelp(pw); return; } else if ("-a".equals(arg)) { // -a is passed when dumping a bug report so we have to acknowledge the // argument. However, we currently don't do anything differently for bug // reports. } else if (arg.length() > 0 && arg.charAt(0) == '-') { pw.println("Unknown option: " + arg); return; Loading Loading @@ -787,9 +792,23 @@ public class InternalResourceService extends SystemService { pw.print("Current battery level: "); pw.println(mCurrentBatteryLevel); mCompleteEconomicPolicy.dump(pw); final long maxCircluation = getMaxCirculationLocked(); pw.print("Max circulation (current/satiated): "); pw.print(narcToString(maxCircluation)); pw.print("/"); pw.println(narcToString(mCompleteEconomicPolicy.getMaxSatiatedCirculation())); final long currentCirculation = mAgent.getCurrentCirculationLocked(); pw.print("Current GDP: "); pw.print(narcToString(currentCirculation)); pw.print(" ("); pw.print(String.format("%.2f", 100f * currentCirculation / maxCircluation)); pw.println("% of current max)"); pw.println(); mCompleteEconomicPolicy.dump(pw); pw.println(); mAgent.dumpLocked(pw); } } Loading