Optimize service restart logic.
If a non-persistent service is being restarted and it was killed due to low memory previously, instead of restarting the service in one second, we now restart it based on its last known oom_adj value. The backoff logic of consistent restarts remains the same. Additionally, when the service is due to restart, if the memory pressure is still considered to be critical, the new logic will further delay the service restart. Initial test results: # of restarts dropped by 40-50% on average with the optimized logic when the memory pressure was gradually increased. Tested manually via memeater. Increased the memory pressure by 500 mb at a time via the following command: adb shell memeater 500 On a 4gb device, no significant restarts were noticed when memory pressure was increased by 2gb in total. When increased by 3gb in total, services started to restart and the above results were observed via the logged output over a 5 min period. Bug: 79848281 Test: manually (steps listed above) Change-Id: Idcd1300882321c6033e569736150a8bf7889678b
Loading
Please register or sign in to comment