From 3f5ab3ff1d66e53c26e3a5951dc0804bca5467a8 Mon Sep 17 00:00:00 2001 From: Bookatz Date: Tue, 13 Mar 2018 12:18:21 -0700 Subject: [PATCH] Statsd: Remove storage of bucketNum Past buckets had a field mBucketNum, storing the "bucket number" they represented. Currently, the concept of bucket number is used by Anomaly Detection (although this may not be necessary), but these stored values are not used at all, so removing them will save RAM. Test: statsd tests still pass Bug: 74607818 Change-Id: Iacc343bc39c5035f6e2f236c03de1d91606eff4c --- cmds/statsd/src/metrics/CountMetricProducer.cpp | 1 - cmds/statsd/src/metrics/CountMetricProducer.h | 1 - cmds/statsd/src/metrics/GaugeMetricProducer.cpp | 1 - cmds/statsd/src/metrics/GaugeMetricProducer.h | 1 - cmds/statsd/src/metrics/ValueMetricProducer.cpp | 1 - cmds/statsd/src/metrics/ValueMetricProducer.h | 1 - cmds/statsd/src/metrics/duration_helper/DurationTracker.h | 1 - .../src/metrics/duration_helper/MaxDurationTracker.cpp | 1 - .../src/metrics/duration_helper/OringDurationTracker.cpp | 6 ++---- cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp | 3 --- 10 files changed, 2 insertions(+), 15 deletions(-) diff --git a/cmds/statsd/src/metrics/CountMetricProducer.cpp b/cmds/statsd/src/metrics/CountMetricProducer.cpp index 22b2a30af328a..07b4e1cc9a870 100644 --- a/cmds/statsd/src/metrics/CountMetricProducer.cpp +++ b/cmds/statsd/src/metrics/CountMetricProducer.cpp @@ -249,7 +249,6 @@ void CountMetricProducer::flushCurrentBucketLocked(const uint64_t& eventTimeNs) } else { info.mBucketEndNs = fullBucketEndTimeNs; } - info.mBucketNum = mCurrentBucketNum; for (const auto& counter : *mCurrentSlicedCounter) { info.mCount = counter.second; auto& bucketList = mPastBuckets[counter.first]; diff --git a/cmds/statsd/src/metrics/CountMetricProducer.h b/cmds/statsd/src/metrics/CountMetricProducer.h index 1d8e42be635cb..e9c308a60966a 100644 --- a/cmds/statsd/src/metrics/CountMetricProducer.h +++ b/cmds/statsd/src/metrics/CountMetricProducer.h @@ -36,7 +36,6 @@ struct CountBucket { int64_t mBucketStartNs; int64_t mBucketEndNs; int64_t mCount; - uint64_t mBucketNum; }; class CountMetricProducer : public MetricProducer { diff --git a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp index e479e5caec2f4..d496b51e7e2f7 100644 --- a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp +++ b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp @@ -393,7 +393,6 @@ void GaugeMetricProducer::flushCurrentBucketLocked(const uint64_t& eventTimeNs) } else { info.mBucketEndNs = fullBucketEndTimeNs; } - info.mBucketNum = mCurrentBucketNum; for (const auto& slice : *mCurrentSlicedBucket) { info.mGaugeAtoms = slice.second; diff --git a/cmds/statsd/src/metrics/GaugeMetricProducer.h b/cmds/statsd/src/metrics/GaugeMetricProducer.h index ca8dc7582680a..017a49430db47 100644 --- a/cmds/statsd/src/metrics/GaugeMetricProducer.h +++ b/cmds/statsd/src/metrics/GaugeMetricProducer.h @@ -44,7 +44,6 @@ struct GaugeBucket { int64_t mBucketStartNs; int64_t mBucketEndNs; std::vector mGaugeAtoms; - uint64_t mBucketNum; }; typedef std::unordered_map> diff --git a/cmds/statsd/src/metrics/ValueMetricProducer.cpp b/cmds/statsd/src/metrics/ValueMetricProducer.cpp index 09913dc513fd1..09f7fa3a9cb82 100644 --- a/cmds/statsd/src/metrics/ValueMetricProducer.cpp +++ b/cmds/statsd/src/metrics/ValueMetricProducer.cpp @@ -355,7 +355,6 @@ void ValueMetricProducer::flushCurrentBucketLocked(const uint64_t& eventTimeNs) } else { info.mBucketEndNs = fullBucketEndTimeNs; } - info.mBucketNum = mCurrentBucketNum; int tainted = 0; for (const auto& slice : mCurrentSlicedBucket) { diff --git a/cmds/statsd/src/metrics/ValueMetricProducer.h b/cmds/statsd/src/metrics/ValueMetricProducer.h index 5e42bd255df40..6884a9c8b4ddf 100644 --- a/cmds/statsd/src/metrics/ValueMetricProducer.h +++ b/cmds/statsd/src/metrics/ValueMetricProducer.h @@ -34,7 +34,6 @@ struct ValueBucket { int64_t mBucketStartNs; int64_t mBucketEndNs; int64_t mValue; - uint64_t mBucketNum; }; class ValueMetricProducer : public virtual MetricProducer, public virtual PullDataReceiver { diff --git a/cmds/statsd/src/metrics/duration_helper/DurationTracker.h b/cmds/statsd/src/metrics/duration_helper/DurationTracker.h index 7b3393fda7e6e..bfb1ec7e06d6c 100644 --- a/cmds/statsd/src/metrics/duration_helper/DurationTracker.h +++ b/cmds/statsd/src/metrics/duration_helper/DurationTracker.h @@ -55,7 +55,6 @@ struct DurationBucket { uint64_t mBucketStartNs; uint64_t mBucketEndNs; uint64_t mDuration; - uint64_t mBucketNum; }; class DurationTracker { diff --git a/cmds/statsd/src/metrics/duration_helper/MaxDurationTracker.cpp b/cmds/statsd/src/metrics/duration_helper/MaxDurationTracker.cpp index 8e0bf2678fea2..058940d11b469 100644 --- a/cmds/statsd/src/metrics/duration_helper/MaxDurationTracker.cpp +++ b/cmds/statsd/src/metrics/duration_helper/MaxDurationTracker.cpp @@ -219,7 +219,6 @@ bool MaxDurationTracker::flushCurrentBucket( DurationBucket info; info.mBucketStartNs = mCurrentBucketStartTimeNs; info.mBucketEndNs = currentBucketEndTimeNs; - info.mBucketNum = mCurrentBucketNum; info.mDuration = mDuration; (*output)[mEventKey].push_back(info); VLOG(" final duration for last bucket: %lld", (long long)mDuration); diff --git a/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.cpp b/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.cpp index 2358415dfaf71..c8a5016c1db85 100644 --- a/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.cpp +++ b/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.cpp @@ -165,13 +165,12 @@ bool OringDurationTracker::flushCurrentBucket( DurationBucket current_info; current_info.mBucketStartNs = mCurrentBucketStartTimeNs; current_info.mBucketEndNs = currentBucketEndTimeNs; - current_info.mBucketNum = mCurrentBucketNum; current_info.mDuration = mDuration; (*output)[mEventKey].push_back(current_info); mDurationFullBucket += mDuration; if (eventTimeNs > fullBucketEnd) { // End of full bucket, can send to anomaly tracker now. - addPastBucketToAnomalyTrackers(mDurationFullBucket, current_info.mBucketNum); + addPastBucketToAnomalyTrackers(mDurationFullBucket, mCurrentBucketNum); mDurationFullBucket = 0; } VLOG(" duration: %lld", (long long)current_info.mDuration); @@ -182,12 +181,11 @@ bool OringDurationTracker::flushCurrentBucket( DurationBucket info; info.mBucketStartNs = fullBucketEnd + mBucketSizeNs * (i - 1); info.mBucketEndNs = info.mBucketStartNs + mBucketSizeNs; - info.mBucketNum = mCurrentBucketNum + i; info.mDuration = mBucketSizeNs; (*output)[mEventKey].push_back(info); // Safe to send these buckets to anomaly tracker since they must be full buckets. // If it's a partial bucket, numBucketsForward would be 0. - addPastBucketToAnomalyTrackers(info.mDuration, info.mBucketNum); + addPastBucketToAnomalyTrackers(info.mDuration, mCurrentBucketNum + i); VLOG(" add filling bucket with duration %lld", (long long)info.mDuration); } } diff --git a/cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp b/cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp index 77b3ace90aff9..c0cc0b6ad218e 100644 --- a/cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp +++ b/cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp @@ -112,7 +112,6 @@ TEST(GaugeMetricProducerTest, TestNoCondition) { it++; EXPECT_EQ(INT, it->mValue.getType()); EXPECT_EQ(11L, it->mValue.int_value); - EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.begin()->second.back().mBucketNum); gaugeProducer.flushIfNeededLocked(bucket4StartTimeNs); EXPECT_EQ(0UL, gaugeProducer.mCurrentSlicedBucket->size()); @@ -125,7 +124,6 @@ TEST(GaugeMetricProducerTest, TestNoCondition) { it++; EXPECT_EQ(INT, it->mValue.getType()); EXPECT_EQ(25L, it->mValue.int_value); - EXPECT_EQ(2UL, gaugeProducer.mPastBuckets.begin()->second.back().mBucketNum); } TEST(GaugeMetricProducerTest, TestPushedEventsWithUpgrade) { @@ -337,7 +335,6 @@ TEST(GaugeMetricProducerTest, TestWithCondition) { .mGaugeAtoms.front() .mFields->begin() ->mValue.int_value); - EXPECT_EQ(1UL, gaugeProducer.mPastBuckets.begin()->second.back().mBucketNum); } TEST(GaugeMetricProducerTest, TestAnomalyDetection) {