diff options
author | Daniel Rosenberg <drosen@google.com> | 2021-06-09 03:54:44 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-06-09 03:54:44 +0000 |
commit | 68b48d3a3ed65b209921ebca3802b931b13fde04 (patch) | |
tree | 27069fdfffc0f861f6eea4f9b4cf5f03d02d8d3d | |
parent | 30749daeb1abb98781c588f39b6f10491f162603 (diff) | |
parent | 69083346bf439398a1a29885e1ac1c2134ccf849 (diff) | |
download | extras-68b48d3a3ed65b209921ebca3802b931b13fde04.tar.gz |
Improve checkpoint_gc jank and logging am: 69083346bf
Original change: https://googleplex-android-review.googlesource.com/c/platform/system/extras/+/14909600
Change-Id: Ib3f63a4b324c138725598992b8c9c15205d39ec1
-rw-r--r-- | checkpoint_gc/checkpoint_gc.sh | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/checkpoint_gc/checkpoint_gc.sh b/checkpoint_gc/checkpoint_gc.sh index a1169ec0..b3080463 100644 --- a/checkpoint_gc/checkpoint_gc.sh +++ b/checkpoint_gc/checkpoint_gc.sh @@ -28,10 +28,13 @@ SLEEP=5 TIME=0 MAX_TIME=1200 -if [ ! -d /dev/sys/fs/by-name/userdata ]; then +# We only need to run this if we're using f2fs +if [ ! -f /dev/sys/fs/by-name/userdata/gc_urgent ]; then exit 0 fi +# Ideally we want to track unusable, as it directly measures what we +# care about. If it's not present, dirty_segments is the best proxy. if [ -f /dev/sys/fs/by-name/userdata/unusable ]; then UNUSABLE=1 METRIC="unusable blocks" @@ -44,9 +47,7 @@ else fi log -pi -t checkpoint_gc Turning on GC for userdata -read OLD_SLEEP < /dev/sys/fs/by-name/userdata/gc_urgent_sleep_time || exit 1 -echo 50 > /dev/sys/fs/by-name/userdata/gc_urgent_sleep_time || exit 1 -echo 1 > /dev/sys/fs/by-name/userdata/gc_urgent || exit 1 +echo 2 > /dev/sys/fs/by-name/userdata/gc_urgent || exit 1 CURRENT=${START} @@ -66,15 +67,18 @@ while [ ${CURRENT} -gt ${THRESHOLD} ]; do sleep ${SLEEP} TIME=$((${TIME}+${SLEEP})) if [ ${TIME} -gt ${MAX_TIME} ]; then + log -pi -t checkpoint_gc Timed out with gc threshold not met. break fi # In case someone turns it off behind our back - echo 1 > /dev/sys/fs/by-name/userdata/gc_urgent + echo 2 > /dev/sys/fs/by-name/userdata/gc_urgent done -log -pi -t checkpoint_gc Turning off GC for userdata -echo 0 > /dev/sys/fs/by-name/userdata/gc_urgent -echo ${OLD_SLEEP} > /dev/sys/fs/by-name/userdata/gc_urgent_sleep_time +# It could be a while before the system reboots for the update... +# Leaving on low level GC can help ensure the boot for ota is faster +# If powerhints decides to turn it off, we'll just rely on normal GC +log -pi -t checkpoint_gc Leaving on low GC for userdata +echo 2 > /dev/sys/fs/by-name/userdata/gc_urgent sync print -u${STATUS_FD} "global_progress 1.0" |