diff options
| author | 2019-10-22 10:47:05 -0700 | |
|---|---|---|
| committer | 2019-12-04 09:49:56 -0800 | |
| commit | 23d6f0aba6b1038f3d207e1523c8ab8d127eebe9 (patch) | |
| tree | fac0d1ace1d18c4bd64495723941470e59923ffa | |
| parent | ad3e08aa693ee0e5936ce6cce2b6036a20554c31 (diff) | |
Add property to skip idle state for zram writeback
Go devices benefit from a early writeback cycle of zram contents to
disk. Waiting for idle will delay the first writeback by a few hours.
Setting zram.force_writeback will allow kicking off writeback
when the device is not idle. The writeback takes a few seconds and did
not show noticible difference in user experience.
Bug: 141756630
Test: Device boots up and writeback works as expected
Change-Id: I4dd9a2d44f5ebd30f14ecbc6401dd05390c08bf6
| -rw-r--r-- | services/core/java/com/android/server/ZramWriteback.java | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/services/core/java/com/android/server/ZramWriteback.java b/services/core/java/com/android/server/ZramWriteback.java index 49bf29bff284..5d97def129a4 100644 --- a/services/core/java/com/android/server/ZramWriteback.java +++ b/services/core/java/com/android/server/ZramWriteback.java @@ -60,6 +60,7 @@ public final class ZramWriteback extends JobService {      private static final String MARK_IDLE_DELAY_PROP = "ro.zram.mark_idle_delay_mins";      private static final String FIRST_WB_DELAY_PROP = "ro.zram.first_wb_delay_mins";      private static final String PERIODIC_WB_DELAY_PROP = "ro.zram.periodic_wb_delay_hours"; +    private static final String FORCE_WRITEBACK_PROP = "zram.force_writeback";      private void markPagesAsIdle() {          String idlePath = String.format(IDLE_SYS, sZramDeviceId); @@ -122,11 +123,12 @@ public final class ZramWriteback extends JobService {      private static void schedNextWriteback(Context context) {          int nextWbDelay = SystemProperties.getInt(PERIODIC_WB_DELAY_PROP, 24); +        boolean forceWb = SystemProperties.getBoolean(FORCE_WRITEBACK_PROP, false);          JobScheduler js = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);          js.schedule(new JobInfo.Builder(WRITEBACK_IDLE_JOB_ID, sZramWriteback)                          .setMinimumLatency(TimeUnit.HOURS.toMillis(nextWbDelay)) -                        .setRequiresDeviceIdle(true) +                        .setRequiresDeviceIdle(!forceWb)                          .build());      } @@ -167,6 +169,7 @@ public final class ZramWriteback extends JobService {      public static void scheduleZramWriteback(Context context) {          int markIdleDelay = SystemProperties.getInt(MARK_IDLE_DELAY_PROP, 20);          int firstWbDelay = SystemProperties.getInt(FIRST_WB_DELAY_PROP, 180); +        boolean forceWb = SystemProperties.getBoolean(FORCE_WRITEBACK_PROP, false);          JobScheduler js = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); @@ -182,7 +185,7 @@ public final class ZramWriteback extends JobService {          // by ro.zram.periodic_wb_delay_hours.          js.schedule(new JobInfo.Builder(WRITEBACK_IDLE_JOB_ID, sZramWriteback)                          .setMinimumLatency(TimeUnit.MINUTES.toMillis(firstWbDelay)) -                        .setRequiresDeviceIdle(true) +                        .setRequiresDeviceIdle(!forceWb)                          .build());      }  } |