summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Srinivas Paladugu <srnvs@google.com> 2019-10-22 10:47:05 -0700
committer Srinivas Paladugu <srnvs@google.com> 2019-12-04 09:49:56 -0800
commit23d6f0aba6b1038f3d207e1523c8ab8d127eebe9 (patch)
treefac0d1ace1d18c4bd64495723941470e59923ffa
parentad3e08aa693ee0e5936ce6cce2b6036a20554c31 (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.java7
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());
}
}