427d372552490a2c5ac4041fe345b15f69451f57 |
|
22-Mar-2018 |
Yao Chen <yaochen@google.com> |
Support sliced condition change in GaugeMetric TODO: We need CTS to verify the behavior. Bug: 73958484 Test: statsd_test Change-Id: I56406983ddede12bc6a2e12188693a0c51ccae5c
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
e06cfd777a501eca17f8dd796b32ad61002c5875 |
|
11-Mar-2018 |
Yangster-mac <yanglu@google.com> |
Support slicing by chain. BUG: b/73975181 Test: statsd test Change-Id: I913ae0f68ff21ed0703bb5da9c60d3eaa3bf5981
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
13fb7e4eeaf7aee408821afe7ee55a5167e49e59 |
|
08-Mar-2018 |
Yangster <yanglu@google.com> |
Statsd cpu optimizaton - cache the changed dimensions in condition tracker. - avoid query condition wizard when unnecessary. - avoid copy dimension keys in condition key generation. Test: statsd tests. BUG: b/73959649 Change-Id: I17d68e2a82643de3f421309841e75f84c6fd8f43
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
580ea321b16c71ddec515553761d6f37359bd3a0 |
|
26-Feb-2018 |
Yao Chen <yaochen@google.com> |
Add StateTracker. StateTracker is a special condition tracker that's based on a state atom. State atoms are annotated in atoms.proto. The rules for StateTracker: 1. must not have "stop". must have "dimension" 2. must be based on a state atom. 3. it must have the all primary fields and the exclusive state field in its dimension. For example UidProcessStateTracker, will have output dimension {uid, state}. Test: unit tests added. Change-Id: I6b77e58e9fabe61f7326daf929577d8b2cfbf27b
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
8a8d16ceea1e5b7a2f8c41e17b5d993035f50f5d |
|
08-Feb-2018 |
Yao Chen <yaochen@google.com> |
Statsd CPU optimization. The key change is to revamp how we parse/store/match a log event, especially how we match repeated field and attribution nodes, and how we construct dimensions and compare them. + We use a integer to encode the field of a log element. And also encode the FieldMatcher into an integer and a bit mask. The log matching becomes 2 integer operations. + Dimension is stored as encoded field and value pair. Checking if 2 dimensions are equal is then becoming checking if the underlying integers are equal. The integers are stored contiguously in memory, so it's much faster than previous tree structure. Start review from FieldValue.h Test: statsd_test + new unit tests Bug: 72659059 Change-Id: Iec8daeacdd3f39ab297c10ab9cd7b710a9c42e86
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
9369446f0b04945d6674550728ae81196d6fb5c2 |
|
23-Jan-2018 |
Yangster-mac <yanglu@google.com> |
Support dimension in condition in metric producers. Test: added e2e tests for count/duration metrics sliced by fields in condition and with/without links. Change-Id: Ie34deba68e6780abdde458be3f0ce5284e76a1a2
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
7ba8fc357e44ee3bb8e614c202852a1c46a9d4a8 |
|
25-Jan-2018 |
Yangster-mac <yanglu@google.com> |
Cpu usage optimization: 1/ Avoid unnecessary field/dimension proto construction. 2/ use unordered_map for slicing. 3/ Use dimension fields to compare dimension keys. Test: all statsd tests passed. Change-Id: I2f74f78589b7f6ecd0803a2ead822b8d0399f334
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
5503f5caae9496585da928a85c563ee28e683496 |
|
16-Jan-2018 |
Yangster-mac <yanglu@google.com> |
condition dimension query. Test: Modified the metric link test to query a subset of the predicate/condition dimensions. Change-Id: I693f14e0b11693fc8ee0bf4fc550977c20d31f71
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
94e197cceb2ba7df13ff8de04f60bfeec64015d9 |
|
03-Jan-2018 |
Yangster-mac <yanglu@google.com> |
1/ Change all "name" to id in statsD. 2/ Handle Subscription for alert. 3/ Support no_report_metric Bug: 69522276 Test: all statsd unit tests passed. Change-Id: I851b235f2d149b8602b0cad632d5bf541962f40a
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
2087716f2bdca90c7c3034d556ac12911bd8018e |
|
23-Dec-2017 |
Yangster-mac <yanglu@google.com> |
1/ Support nested message and repeated fields in statsd. 2/ Filter gauge fields by FieldMatcher. 3/ Wire up wakelock attribution chain. 4/ e2e test: wakelock duration metric with aggregated predicate dimensions. 5/ e2e test: count metric with multiple metric condition links for 2 predicates and 1 non-sliced predicate. Test: statsd unit test passed. Change-Id: I89db31cb068184a54e0a892fad710966d3127bc9
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
d5aa01b3716e07463019fa772f07a40613f9e39e |
|
20-Dec-2017 |
Yao Chen <yaochen@google.com> |
Remove the hacky HashableDimensionKey. + Add a real HashableDimensionKey as a wrapper of the dimension. So we can get rid of the maps that we kept. Pay down technical debt and reduce memory usage. Test: statsd_test & manual Change-Id: I233280cf1e2ce93da6a8cd4e8514abb066f4016d
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
12d01fa7c165a1f79091d4d742a48bffd7552650 |
|
05-Dec-2017 |
Stefan Lafon <stlafon@google.com> |
Rename more things in statsd_config.proto. SimpleCondition -> SimplePredicate simple_condition -> simple_predicate Condition -> Predicate condition -> predicate Test: Ran statsd and statsd_test. Change-Id: I3115fb51a4dc3cbe5f23535dfc448d5755b9ed7f
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
b356151e63140085cb96fa16804ee18b3862a4fc |
|
22-Nov-2017 |
Yao Chen <yaochen@google.com> |
Add StatsdStats and guardrail. + StatsdStats is the global class that tracks the stats about statsd. + Added guardrail for classes that have a map which could potentially grow unboundedly with the number of logs. TODO: add unit tests & CTS for StatsdStats, and guardrail add stats for pulled atoms. Test: statsd_test Change-Id: I0ea562de4dd3f6162f7923a9c193420b482c1d51
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
40a910f31d754d51f5bad471d695403ce5b30848 |
|
23-Nov-2017 |
TreeHugger Robot <treehugger-gerrit@google.com> |
Merge "Fixes out of range bug in SimpleConditionTracker."
|
c18abedfe29eb51fec14797ecf0bb101d22900b2 |
|
23-Nov-2017 |
David Chen <dwchen@google.com> |
Fixes out of range bug in SimpleConditionTracker. One of the unit tests was flaky because mStopAllLogMatcherIndex may be greater than the size of eventMatcherValues, so we access an element that is greater than the vector size. Test: Check unit-tests still work. Flake is a bit hard to find. Change-Id: Ib177cd0ae00bbe7aa6982c6ec31d9094253a9c10
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
7c334a129e93e405a72e8299a1cd928af079d14f |
|
22-Nov-2017 |
Yangster <yanglu@google.com> |
Make member function as const whenever possible. Test: unit tests passed. Change-Id: I751cabf305a4b5aa2095853cc951837da0df4c78
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
d41c4220d06875cea2d19a7991c3227bd56ea611 |
|
16-Nov-2017 |
Yao Chen <yaochen@google.com> |
Fix some bugs found in statsd + in log matcher, condition tracker and duration metric Test: added unit test Change-Id: Id633e856ba5453842487321d7ddc0c64100e4bb8
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
967b2051fe17fa3c38d248a556f8c4ff21a573a7 |
|
08-Nov-2017 |
Yao Chen <yaochen@google.com> |
Make SimpleCondition satisfactorily complicated. + Support nested counting + Support StopAll + Added default_condition to SimpleCondition config + Some refactoring/clean up + Added unit tests Test: Added unit tests, statsd_test Change-Id: I6564ac2e068ce6810e8090c0818064c625c7847a
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
5154a379303ab90a2b2914676a4441917a329b5d |
|
31-Oct-2017 |
Yao Chen <yaochen@google.com> |
Adding multi layer aggregation in DurationMetric Newly supported metrics examples: 1) Compute [Total|Max] duration of [an app] holding [ANY] wake lock while [this app] is in [background] and [screen off], bucket size 30seconds, and slice output by uid. 2) Compute [Total|Max] duration of [ANY app] holding [ANY] wake lock while [this app] is in [background] and [screen off], bucket size 30 seconds. + DurationMetric proto has a "what" which is a SimpleCondition. It defines the atom level start and stop of the duration timer, and it has its atom dimension. e.g., for wake locks, the atom dimensions wil be uid and wl name. + Now dimension is explicitly specified in SimpleCondition proto instead of inferred from the "link" + Added support for "Or" and "Max" through 2 layers of aggregation. TODO: (1) The way we track slicedCondition in duration metric is not efficient. optimize! (2) The output dimension should all use int32 instead of KeyMatcher. Fix in a future cl. Test: Added some unit tests using gmock. Will add more unit tests. Change-Id: I58a827624f01f9a54fcb80709c4de4ff94a8bc67
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
5110bedd787835d4dbc809b7977285cac364bdef |
|
23-Oct-2017 |
Yao Chen <yaochen@google.com> |
Add EventMetricProducer + Started to use ProtoOutputStream in EventMetricProducer. [TODO]: We need to auto-generate fieldIds for StatsLogReport, XXXMetricData, etc. [TODO]: We need to add Enum type to liblog, otherwise we cannot reconstruct a proto containing an enum + Some refactor in metric initialization code. There are still boiler plate code, because Metrics are similar but with subtle differences. Test: statsd_test Change-Id: Id7e3212566249a8139b9680f04238c455d50c1b8
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
729093df0dd7d7038ad43b16ecdb59a1404f3b50 |
|
16-Oct-2017 |
Yao Chen <yaochen@google.com> |
Add support for dimension, and link with condition and added DurationMetric Now we support following metrics: <Duration> of [app holding a wake lock], while [*this app*] is [in background] [AND] [screen is off] [Slice] the output by [app name, wake lock name], with bucket size [30sec] + Also added onDumpReport() api in MetricsManager, it can be called from client to fetch the data from statsd + Also added command line tool to dump the StatsLogReport from all metrics for debugging. + Synced proto from google3. with a pending cl (cr/172359050) TODO: We need to add tons of tests to test the Metrics. I will work on it after this CL so people can be unblocked. I locally test the duration metric with wake lock with an app that generates StatsLog events. Test: statsd_test and manual test, and run: adb shell cmd stats dump-report We have a default config, which contains a metrics to count PROCESS_START event sliced by package name. Change-Id: I4838cc6cf025c143b7e84f43040703a78121fd25
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
c4dfae56c10a1dd571baa78c750f2e68c919d74f |
|
18-Oct-2017 |
Joe Onorato <joeo@google.com> |
Introduce a new wrapper for log_msg -- LogEvent It stores all of the parsed fields in a single vector, and provides accessor methods to get at fields by index with their correct type. Test: statsd_test Change-Id: I4fa94e4ce52db3ac87f19b62f9c85398de6e8145
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
9fc9edf95a308f5884bf541cac81ce1f41aba0ba |
|
16-Oct-2017 |
Joe Onorato <joeo@google.com> |
Clean up how we handle configurations, and other assorted cleanup - Add a ConfigManager class that tracks the configurations that have been passed to us. Configurations are now tracked by tuples of (uid,tag), where the tag is an app-defined string, in case a single uid has multiple configurations. - Move all of the initialization into StatsService. - Get rid of the ability to have multiple LogListeners. Raw events are now pushed directly into StatsService, which can distribute them to the interested parties (and will eventually be able to do the proper locking). - Add Log.h, which sets our LOG_TAG correctly. - Move some of the related files that I expect will grow some into their own subdirectories. Test: statsd_test Test: adb shell cmd stats config ... Test: adb shell dumpsys stats Change-Id: I79487603003d8a842d5bd319741f1ecbf72063d1
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
4b1468538fa7b95ec8e7cbc742e99a5c1d63085b |
|
11-Oct-2017 |
Yao Chen <yaochen@google.com> |
Fix a bug in SimpleConditionTracker. copy-paste bug Test: manual. Will add unit tests for it. Change-Id: I9494271a8a407b0f3c5fc0138c1afb4925c69b79
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|
caf339d004fad667748b68912c254df4e75cdc5a |
|
07-Oct-2017 |
Yao Chen <yaochen@google.com> |
More complete implementation for condition and log matchers in statsd. + also synced proto from google3 to fix the LogEntryMatcher proto + MetricsManager represents StatsdConfig, it's responsible for initializing and managing all LogEntryMatcher, Condition, and Metrics. Start review from here. + Added more complete StatsdConfig initialization, including building the map for: LogEntryMatcher -> Metrics LogEntryMatcher -> Condition Condition -> Metrics. All the maps use index(int). The extra amount of memory for storing mappings help us quickly process log events. The StatsdConfig initialization process detects malformed config - Circle dependency - Missing definition etc. And once we detect ANY error, statsd will reject the config. And the resources related to this config will be released. Test: Added unit tests Change-Id: I2c4aefdbf3e2aa1701eacbb2fb5e653819ec1fbb
/frameworks/base/cmds/statsd/src/condition/SimpleConditionTracker.cpp
|