Update libmetrics docs to cover some recent questions and issues.

Review URL: http://codereview.chromium.org/2828017
This commit is contained in:
Darin Petkov 2010-06-21 16:27:52 -07:00
parent 32e1df9d6c
commit c2bf95fd8b
2 changed files with 44 additions and 0 deletions

View File

@ -116,3 +116,36 @@ signals to or communicate in some alternative way with the metrics
daemon. Then the metrics daemon needs to monitor for the relevant
events and take appropriate action -- for example, aggregate data and
send the histogram samples.
================================================================================
FAQ
================================================================================
Q. What should my histogram's |min| and |max| values be set at?
A. You should set the values to a range that covers the vast majority
of samples that would appear in the field. Note that samples below
the |min| will still be collected in the underflow bucket and
samples above the |max| will end up in the overflow bucket. Also,
the reported mean of the data will be correct regardless of the
range.
Q. How many buckets should I use in my histogram?
A. You should allocate as many buckets as necessary to perform proper
analysis on the collected data. Note, however, that the memory
allocated in Chrome for each histogram is proportional to the
number of buckets. Therefore, it is strongly recommended to keep
this number low (e.g., 50 is normal, while 100 is probably high).
Q. When should I use an enumeration (linear) histogram vs. a regular
(exponential) histogram?
A. Enumeration histograms should really be used only for sampling
enumerated events and, in some cases, percentages. Normally, you
should use a regular histogram with exponential bucket layout that
provides higher resolution at the low end of the range and lower
resolution at the high end. Regular histograms are generally used
for collecting performance data (e.g., timing, memory usage, power)
as well as aggregated event counts.

View File

@ -38,6 +38,11 @@ class MetricsLibrary : public MetricsLibraryInterface {
// |nbuckets| is the number of histogram buckets.
// [0,min) is the implicit underflow bucket.
// [|max|,infinity) is the implicit overflow bucket.
//
// Note that the memory allocated in Chrome for each histogram is
// proportional to the number of buckets. Therefore, it is strongly
// recommended to keep this number low (e.g., 50 is normal, while
// 100 is high).
bool SendToUMA(const std::string& name, int sample,
int min, int max, int nbuckets);
@ -50,6 +55,12 @@ class MetricsLibrary : public MetricsLibraryInterface {
// |max| is the maximum value of the histogram samples.
// 0 is the implicit underflow bucket.
// [|max|,infinity) is the implicit overflow bucket.
//
// An enumaration histogram requires |max| + 1 number of
// buckets. Note that the memory allocated in Chrome for each
// histogram is proportional to the number of buckets. Therefore, it
// is strongly recommended to keep this number low (e.g., 50 is
// normal, while 100 is high).
bool SendEnumToUMA(const std::string& name, int sample, int max);
// Sends to Autotest and returns true on success.