Reduce duplicate strings due to the package cache.
Change from the previous attempt: - Fixed the helper class. The original version had a few bugs. - Bundle.readFromParcel() now handles a Parcel with a read-write helper properly. ** Comparison ** The following charts are the actual measurement with and without the fix, using "dumpsys system". - The red bar is "total private dirty". - The X axsis is time since boot. Without fix: - #1 First boot: -- https://docs.google.com/spreadsheets/d/1CbmU8cQQQw7n7tyqbZi3beRHNuzqcmJgdvzDpi40Q1I/edit#gid=1971317391 -- Private dirty stabilizes at ~16.8M. -- Loading system packages took 1.8 seconds. - #2 Second boot: -- https://docs.google.com/spreadsheets/d/1CbmU8cQQQw7n7tyqbZi3beRHNuzqcmJgdvzDpi40Q1I/edit#gid=982210726 -- Private dirty stabilizes at ~17.5M. -- Loading system packages took 0.5 seconds. With fix: - #3 First boot: -- https://docs.google.com/spreadsheets/d/1R6lL0AnAp93HnrqWujJFNgOjj6wvGicgDlbDAevbc3g/edit#gid=791764875 -- Private dirty stabilizes at around the same level as #1. -- Loading system packages took 1.9 seconds. - #4 Second boot: -- https://docs.google.com/spreadsheets/d/1CbmU8cQQQw7n7tyqbZi3beRHNuzqcmJgdvzDpi40Q1I/edit#gid=1820894299 -- Private dirty stabilizes at around the same level as #1. -- Loading system packages took 0.7 seconds. Package manager start up time with and without the fix: - (Ignored ones that are too fast; probably the thermal throttling didn't kick in.) - https://docs.google.com/spreadsheets/d/1CbmU8cQQQw7n7tyqbZi3beRHNuzqcmJgdvzDpi40Q1I/edit#gid=499396796 - Before: 3.5 seconds (average of 5 reboots) - After: 3.6 seconds (average of 5 reboots) Package scan speed comparison: - With the fix, first boot. 08-03 08:49:56.851 1000 779 779 I PackageManager: Finished scanning system apps. Time: 2133 ms, packageCount: 143 , timePerPackage: 14 , cached: 0 08-03 08:49:56.971 1000 779 779 I PackageManager: Finished scanning non-system apps. Time: 121 ms, packageCount: 11 , timePerPackage: 11 , cached: 0 - With the fix, second boot. 08-03 08:53:29.387 1000 779 779 I PackageManager: Finished scanning system apps. Time: 484 ms, packageCount: 143 , timePerPackage: 3 , cached: 143 08-03 08:53:29.424 1000 779 779 I PackageManager: Finished scanning non-system apps. Time: 37 ms, packageCount: 11 , timePerPackage: 3 , cached: 11 ** Conclusion ** - This CL wil slightly slow down the boot time (0.2 seconds on a thermal-throttled bullhead), but the system server's ram consumption will go down to the no-cache level. - Using the package cache is still faster than not using it. Test: build, boot, reboot, adb-install, reboot Test: bit FrameworksCoreTests:android.content.pm.PackageParserTest Test: bit FrameworksServicesTests:com.android.server.pm.PackageParserTest Test: cts-tradefed run cts-dev --skip-device-info --skip-preconditions --skip-system-status-check com.android.compatibility.common.tradefed.targetprep.NetworkConnectivityChecker -a armeabi-v7a -l INFO -m CtsOsTestCases -t android.os.cts.BundleTest Bug: 64112468 Change-Id: I30691a032cb1dd1c7f6c1966a096c2f0d07a09cb
Loading
Please register or sign in to comment