abhishek sen created PHOENIX-5436:
-------------------------------------

             Summary: Histogram view of Global Client Metrics
                 Key: PHOENIX-5436
                 URL: https://issues.apache.org/jira/browse/PHOENIX-5436
             Project: Phoenix
          Issue Type: Improvement
            Reporter: abhishek sen


Currently the 
[GlobalClientMetrics|https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/monitoring/GlobalClientMetrics.java]
 enum-class defines Phoenix Global Client Metrics as an enum and each 
metric-enum tracks a [Phoenix 
Metric|https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/monitoring/Metric.java]
 object implemented by 
[AtomicMetric|https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/monitoring/AtomicMetric.java]
 class. This tracks a single counter, but in some use cases we want the 
distribution of a particular metric value over some period of time. One example 
could be the metric 
[TASK_EXECUTION_TIME|https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/monitoring/MetricType.java#L47].
 The Global Client metric tracks the aggregate value for the execution time of 
the task. More useful information to monitor would be the distribution of task 
execution time instead. 
 Now, in order to incorporate histogram view of the metric, we can use the 
[Histogram 
Implementation|https://github.com/apache/hbase/blob/master/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java]
 from hbase-metrics-api package. The current GlobalClientMetric also ultimately 
adapts to hbase-metrics-api interface but it 
[implements|https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/monitoring/GlobalClientMetrics.java#L155]
 the 
[Gauge|https://github.com/apache/hbase/blob/master/hbase-metrics-api/src/main/java/org/apache/hadoop/hbase/metrics/Gauge.java]
 class which can only keep track of a single value not a histogram. So one way 
could be to create a new GlobalClientHistogramMetrics enum class which keeps 
track of a Histogram (based onĀ 
[MutableTimeHistogram|https://github.com/apache/hbase/blob/master/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableTimeHistogram.java])
 for each enum-metric instead of a single counter as it is now. The updating of 
the these new metric can go 
[here|https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/job/JobManager.java#L289]
 within JobManager class where the currently available Global as well as 
request-level metrics are being updated.



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to