From 7b847f7c649e851b7911f9640248587e9ac4d895 Mon Sep 17 00:00:00 2001 From: Daeho Jeong Date: Fri, 24 Jun 2022 15:08:08 -0700 Subject: [PATCH] Make target dirty segment ratio tunable Bug: 241601436 Test: check smart idle maint log of StorageManagerService Signed-off-by: Daeho Jeong Change-Id: I97503795473a9977740e717bf7b0ef6283c65a53 Merged-In: I97503795473a9977740e717bf7b0ef6283c65a53 --- .../java/com/android/server/StorageManagerService.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 3838db3490664..9a98f545d8d01 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -372,6 +372,8 @@ class StorageManagerService extends IStorageManager.Stub private static final boolean DEFAULT_CHARGING_REQUIRED = true; // Minimum GC interval sleep time in ms private static final int DEFAULT_MIN_GC_SLEEPTIME = 10000; + // Target dirty segment ratio to aim to + private static final int DEFAULT_TARGET_DIRTY_RATIO = 80; private volatile int mLifetimePercentThreshold; private volatile int mMinSegmentsThreshold; @@ -380,6 +382,7 @@ class StorageManagerService extends IStorageManager.Stub private volatile float mLowBatteryLevel; private volatile boolean mChargingRequired; private volatile int mMinGCSleepTime; + private volatile int mTargetDirtyRatio; private volatile boolean mNeedGC; private volatile boolean mPassedLifetimeThresh; @@ -2717,6 +2720,8 @@ class StorageManagerService extends IStorageManager.Stub "charging_required", DEFAULT_CHARGING_REQUIRED); mMinGCSleepTime = DeviceConfig.getInt(DeviceConfig.NAMESPACE_STORAGE_NATIVE_BOOT, "min_gc_sleeptime", DEFAULT_MIN_GC_SLEEPTIME); + mTargetDirtyRatio = DeviceConfig.getInt(DeviceConfig.NAMESPACE_STORAGE_NATIVE_BOOT, + "target_dirty_ratio", DEFAULT_TARGET_DIRTY_RATIO); // If we use the smart idle maintenance, we need to turn off GC in the traditional idle // maintenance to avoid the conflict @@ -2857,10 +2862,11 @@ class StorageManagerService extends IStorageManager.Stub ", dirty reclaim rate: " + mDirtyReclaimRate + ", segment reclaim weight: " + mSegmentReclaimWeight + ", period(min): " + sSmartIdleMaintPeriod + - ", min gc sleep time(ms): " + mMinGCSleepTime); + ", min gc sleep time(ms): " + mMinGCSleepTime + + ", target dirty ratio: " + mTargetDirtyRatio); mVold.setGCUrgentPace(avgWriteAmount, mMinSegmentsThreshold, mDirtyReclaimRate, mSegmentReclaimWeight, sSmartIdleMaintPeriod, - mMinGCSleepTime); + mMinGCSleepTime, mTargetDirtyRatio); } else { Slog.i(TAG, "Skipping smart idle maintenance - block based checkpoint in progress"); }