ed909ae8db2f44ce7fe7003c6fee457f13669702 |
|
23-Mar-2017 |
Jeff Sharkey <jsharkey@android.com> |
Follow "atomic" to "group" refactoring. Remove noisy logging about UIDs that are relying on default cache quota of 64MiB. Move away from yucky old statfs() and use statvfs() instead. Test: /data/nativetest/installd_cache_test/installd_cache_test Bug: 35812899, 35684969, 36482620 Change-Id: I3d68da97eac2ebcda489bdf9d27061cac5b3f7cc
/frameworks/native/cmds/installd/CacheItem.h
|
871a8f236ef2a055b9955b47a342b2c44c020ef7 |
|
22-Feb-2017 |
Jeff Sharkey <jsharkey@android.com> |
Logic for atmoic/tombstone behavior; split mode. Flesh out logic for cache directories that request new atomic and/or tombstone clearing behaviors. Atomic directories are considered for deletion as a single all-or-nothing unit, and tombstone directories truncate any removed files instead of unlinking them. Since these behaviors can be mixed together, add local tests that quickly verify several different permutations. Reduce memory footprint of CacheItem objects by only storing name and pointer to parent (instead of full path). Fix ordering bug by switching to std::stable_sort. Add "V2_DEFY_QUOTA" flag so we can split clearing into two distinct phases: clearing data for apps above their quotas, and then pushing deeper by clearing data for apps below their quotas. Test: adb shell /data/nativetest64/installd_cache_test/installd_cache_test Bug: 34692014, 33811826 Change-Id: I156897de1d1d1c371b2b837128b2e286bf33d40d
/frameworks/native/cmds/installd/CacheItem.h
|
88ddd94834dae9c5862a07a1e4432b171b2f5d9f |
|
18-Jan-2017 |
Jeff Sharkey <jsharkey@android.com> |
First pass at updated cache clearing logic. The old clearing algorithm is very naive and it sorts all cached files globally by modified time. This sadly lets apps gamify the system by setting their modified times far in the future, and it's very expensive because it requires a global filesystem traversal to free up even the smallest amount of data. Instead, this CL introduces a much more fair cache clearing algorithm that deletes files from specific UIDs based on how much cache space that UID is using proportional to the space allocated to them. This new design has several nice properties: -- It uses the recently added quotactl() feature to rapidly target the apps that are using the most space. -- We only need to traverse the filesystem for UIDs that actively enter the crosshairs of the clearing algorithm. -- Disciplined apps who stay under their allocated quota will be the last to have their cached data cleared. -- This design can be easily adapted to support additional features such as atomic purging and tombstones. In summary, the new algorithm is extremely efficient when freeing up the typical small-to-medium amounts of disk space, and is only moderately less efficient than the old algorithm when forced to clear all cached data. Test: builds, boots, clearing strategy looks sane Bug: 33965858 Change-Id: I66f95089cb33f1add3f31fcf1082ab2469870fda
/frameworks/native/cmds/installd/CacheItem.h
|