From e72252b6886096eef308164b830fe84dd3c6c01d Mon Sep 17 00:00:00 2001 From: Chenjie Yu Date: Thu, 1 Feb 2018 13:19:35 -0800 Subject: [PATCH] Add command to clear puller cache Test: manual test Change-Id: Id1fa48b5a6f2200d22f4a746763f65d0c8d65f72 --- cmds/statsd/Android.mk | 2 ++ cmds/statsd/src/StatsService.cpp | 6 ++++++ cmds/statsd/src/StatsService.h | 5 +++++ cmds/statsd/src/external/StatsPuller.cpp | 5 +++++ cmds/statsd/src/external/StatsPuller.h | 2 ++ cmds/statsd/src/external/StatsPullerManager.h | 6 +++++- cmds/statsd/src/external/StatsPullerManagerImpl.cpp | 6 ++++++ cmds/statsd/src/external/StatsPullerManagerImpl.h | 2 ++ 8 files changed, 33 insertions(+), 1 deletion(-) diff --git a/cmds/statsd/Android.mk b/cmds/statsd/Android.mk index eabbb96a392ef..cc182273e45d5 100644 --- a/cmds/statsd/Android.mk +++ b/cmds/statsd/Android.mk @@ -40,6 +40,8 @@ statsd_common_src := \ src/external/SubsystemSleepStatePuller.cpp \ src/external/CpuTimePerUidPuller.cpp \ src/external/CpuTimePerUidFreqPuller.cpp \ + src/external/KernelUidCpuActiveTimeReader.cpp \ + src/external/KernelUidCpuClusterTimeReader.cpp \ src/external/StatsPullerManagerImpl.cpp \ src/logd/LogEvent.cpp \ src/logd/LogListener.cpp \ diff --git a/cmds/statsd/src/StatsService.cpp b/cmds/statsd/src/StatsService.cpp index f545bb0738e9d..4e4145439e25c 100644 --- a/cmds/statsd/src/StatsService.cpp +++ b/cmds/statsd/src/StatsService.cpp @@ -551,6 +551,12 @@ status_t StatsService::cmd_dump_memory_info(FILE* out) { return NO_ERROR; } +status_t StatsService::cmd_clear_puller_cache(FILE* out) { + mStatsPullerManager.ClearPullerCache(); + fprintf(out, "Puller cached data removed!\n"); + return NO_ERROR; +} + Status StatsService::informAllUidData(const vector& uid, const vector& version, const vector& app) { VLOG("StatsService::informAllUidData was called"); diff --git a/cmds/statsd/src/StatsService.h b/cmds/statsd/src/StatsService.h index be20893994f10..fd3ed1dbed722 100644 --- a/cmds/statsd/src/StatsService.h +++ b/cmds/statsd/src/StatsService.h @@ -197,6 +197,11 @@ private: */ status_t cmd_dump_memory_info(FILE* out); + /* + * Clear all puller cached data + */ + status_t cmd_clear_puller_cache(FILE* out); + /** * Update a configuration. */ diff --git a/cmds/statsd/src/external/StatsPuller.cpp b/cmds/statsd/src/external/StatsPuller.cpp index cadc535f2469e..da14434737afb 100644 --- a/cmds/statsd/src/external/StatsPuller.cpp +++ b/cmds/statsd/src/external/StatsPuller.cpp @@ -59,6 +59,11 @@ bool StatsPuller::Pull(std::vector>* data) { return ret; } +void StatsPuller::ClearCache() { + lock_guard lock(mLock); + mCachedData.clear(); +} + } // namespace statsd } // namespace os } // namespace android diff --git a/cmds/statsd/src/external/StatsPuller.h b/cmds/statsd/src/external/StatsPuller.h index 47cc9f01e0547..bc7c45f535d1f 100644 --- a/cmds/statsd/src/external/StatsPuller.h +++ b/cmds/statsd/src/external/StatsPuller.h @@ -38,6 +38,8 @@ public: bool Pull(std::vector>* data); + void ClearCache(); + protected: // The atom tag id this puller pulls const int mTagId; diff --git a/cmds/statsd/src/external/StatsPullerManager.h b/cmds/statsd/src/external/StatsPullerManager.h index 00a1475c0829c..4826d963a3ede 100644 --- a/cmds/statsd/src/external/StatsPullerManager.h +++ b/cmds/statsd/src/external/StatsPullerManager.h @@ -50,10 +50,14 @@ class StatsPullerManager { return mPullerManager.Pull(tagId, data); } - virtual void SetTimeBaseSec(const long timeBaseSec) { + void SetTimeBaseSec(const long timeBaseSec) { mPullerManager.SetTimeBaseSec(timeBaseSec); } + void ClearPullerCache() { + mPullerManager.ClearPullerCache(); + } + private: StatsPullerManagerImpl & mPullerManager = StatsPullerManagerImpl::GetInstance(); diff --git a/cmds/statsd/src/external/StatsPullerManagerImpl.cpp b/cmds/statsd/src/external/StatsPullerManagerImpl.cpp index 148c9ae9b249a..b4b04beeb31d5 100644 --- a/cmds/statsd/src/external/StatsPullerManagerImpl.cpp +++ b/cmds/statsd/src/external/StatsPullerManagerImpl.cpp @@ -195,6 +195,12 @@ void StatsPullerManagerImpl::OnAlarmFired() { } } +void StatsPullerManagerImpl::ClearPullerCache() { + for (auto puller : mPullers) { + puller.second->ClearCache(); + } +} + } // namespace statsd } // namespace os } // namespace android diff --git a/cmds/statsd/src/external/StatsPullerManagerImpl.h b/cmds/statsd/src/external/StatsPullerManagerImpl.h index 7c59f6659d1f1..fba3ade8c1bb6 100644 --- a/cmds/statsd/src/external/StatsPullerManagerImpl.h +++ b/cmds/statsd/src/external/StatsPullerManagerImpl.h @@ -49,6 +49,8 @@ public: void SetTimeBaseSec(long timeBaseSec) {mTimeBaseSec = timeBaseSec;}; + void ClearPullerCache(); + private: StatsPullerManagerImpl();