234d1828ca4a706676ad6f3fa0629959c74297c7 |
|
14-Mar-2018 |
Mike Ma <yanmin@google.com> |
Resolve STATSD and batterystats race condition Both STATSD and batterystats need to read uid cpu info. However, uid cpu stats needs to be cleared from time to time to conserve memory. To resolve this race condition, only batterystats will remove uid stats, both from readers and from the kernel, also with a delay, so that STATSD can access such info before it is removed. Refactored readers to reuse some common code. Also removed string reader from KernelUidCpuFreqTimeReader completely since binary reader has been working fine for a while. Change-Id: I209bdcec642e1a29a44b566ce98ebbfaaacb4e6a Fixes: 72172569 Test: BatteryStatsCpuTimesTest Test: KernelUidCpuActiveTimeReaderTest Test: KernelUidCpuClusterTimeReaderTest Test: KernelUidCpuFreqTimeReaderTest
/frameworks/base/core/java/com/android/internal/os/KernelUidCpuClusterTimeReader.java
|
ec67661bdfe1814039f625575176678219acc7b1 |
|
07-Mar-2018 |
Chenjie Yu <cjyu@google.com> |
Refactor cpu stats pullers use same cpu stats readers with BatteryStats so that 1) both throttle to avoid too frequent pulls 2) cached value is served within throttle interval to avoid double pulling by both statsd and BatteryStats To run unit tests: bit FrameworksCoreTests:com.android.internal.os.KernelUidCpuFreqTimeReaderTest bit FrameworksCoreTests:com.android.internal.os.KernelUidCpuClusterTimeReaderTest bit FrameworksCoreTests:com.android.internal.os.KernelUidCpuActiveTimeReaderTest make -j56 statsd_test && adb sync data && adb shell /data/nativetest64/statsd_test/statsd_test Test: cts test, unit test Bug: 73745189 Bug: 73780619 Bug: 73360959 Merged-In: I10a9bc91ca67fa812f4cd71c4fbd73c1a5ba580e Change-Id: I10a9bc91ca67fa812f4cd71c4fbd73c1a5ba580e
/frameworks/base/core/java/com/android/internal/os/KernelUidCpuClusterTimeReader.java
|
69d8b3e0508de7e181f70a3322be626b1527ee0e |
|
23-Feb-2018 |
Mike Ma <yanmin@google.com> |
Refactor KernelUidCpuTimeReader Refactor KernelUidCpu*TimeReader, all extends KernelUidCpuTimeReaderBase. Refined logging of these classes, avoid spamming system log. Change-Id: Id8e149ce5be2595292a31de7fe6e1a94cef28bc1 Fixes: 73825907 Test: KernelUidCpu*TimeReaderTest
/frameworks/base/core/java/com/android/internal/os/KernelUidCpuClusterTimeReader.java
|
2ab014426647bbc8960fdb4dadfe480b9806676e |
|
13-Feb-2018 |
Mike Ma <yanmin@google.com> |
Binary Cpu Time Proc File Reader Kernel now exposes cpu time proc files in binary format to save cpu cycles. New proc files are: Per uid freq time: /proc/uid_cpupower/time_in_state Per uid active time: /proc/uid_cpupower/concurrent_active_time Per uid cluster time: /proc/uid_cpupower/concurrent_policy_time (See PowerProfile.java on how these data are used) KernelUidCpuActiveTimeReader, KernelUidCpuClusterTimeReader and KernelUidCpuFreqTimeReader are modified to use these new data. Meanwhile, statsd needs these data too. So the actual reading fuctionality is delegated to singletons in KernelCpuProcReader to accomodate concurrent access of these proc files by more than one party. When multiple read requests hit the singleton within the throttle interval, the singleton will return stale data. Optimization KernelCpuProcReader reuses the same ByteBuffer to save results. KernelUid***Reader all reuse the same long[] array to send results back to BatteryStatsImpl. Estimated saving of ~200 KB GC effort per read request. Add a flag to control throttle interval: kernel_uid_readers_throttle_time Bug: 72763654 Bug: 71906435 Bug: 71905885 Bug: 70517018 Fixes: 73166477 Fixes: 72172569 Test: BatteryStatsCpuTimesTest Test: KernelUidCpuActiveTimeReaderTest Test: KernelUidCpuClusterTimeReaderTest Test: KernelUidCpuFreqTimeReaderTest Test: KernelCpuProcReaderTest Change-Id: I1012667ce3b9eb35e37882a058bd4bceccabbbe9
/frameworks/base/core/java/com/android/internal/os/KernelUidCpuClusterTimeReader.java
|
3d422c37b7f2caf364febc556e17b43c40c56be6 |
|
25-Oct-2017 |
Mike Ma <yanmin@google.com> |
Add cluster&active cost to cpu power Add logic to read per UID cluster and active CPU time from the kernel in BatteryStatsImpl, store them in BatteryStats.Uid, then use these data to calculate CPU power more accurately in CpuPowerCalculator. Change-Id: I06a84d2bba8b97445466b310f15092614ff3477f Bug: 67752294 Test: PowerProfileTest Test: KernelUidCpuActiveTimeReaderTest Test: KernelUidCpuClusterTimeReaderTest Test: BatteryStatsCpuTimesTest
/frameworks/base/core/java/com/android/internal/os/KernelUidCpuClusterTimeReader.java
|