[
https://issues.apache.org/jira/browse/FLINK-7608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16200585#comment-16200585
]
Hai Zhou UTC+8 edited comment on FLINK-7608 at 10/11/17 4:53 PM:
-----------------------------------------------------------------
Before I start, I want discuss my idea:
redesign a class that measures latency, named LatencyStatistics.
the following is the structure of this class:
1.contains a constructor
{code:java}
LatencyStatistics(MetricGroup metricGroup, int histogramWindowSize)
{code}
2. contains three fields
{code:java}
MetricGroup metricGroup // equal metricGroup from the constructor
int windowSize // equal histogramWindowSize from the constructor
latencyStats = HashMap<String, LatencyHistogram>
{code}
3. contains a method to receive latencyMarker
{code:java}
reportLatency(latencyMarker maker) {
String key = _maker.vertexID_ +"-"+_maker.subtaskIndex_
LatencyHistogram sourceStats = latencyStats.get(key);
if sourceStats == null then {
sourceStats = new LatencyHistogram(this.windowSize)
this.latencyStats.put(key, sourceStats)
this.metricGroup.histogram(key, sourceStats)
}
this.sourceStats.addValue(System.currentTimeMillis() -
marker.getMarkedTime());
}
{code}
the *LatencyHistogram* extends org.apache.flink.metrics.Histogram, and wrap a
*DescriptiveStatistics* internally.
[~Zentol] [~rmetzger] [~aljoscha], what is your opinions here?
was (Author: yew1eb):
Before I start, I want discuss my idea:
redesign a class that measures latency, named LatencyStatistics.
the following is the structure of this class:
1.contains a constructor
{code:java}
LatencyStatistics(MetricGroup metricGroup, int histogramWindowSize)
{code}
2. contains three fields
{code:java}
MetricGroup metricGroup // equal metricGroup from the constructor
int windowSize // equal histogramWindowSize from the constructor
latencyStats = HashMap<String, LatencyHistogram>
{code}
3. contains a method to receive latencyMarker
{code:java}
reportLatency(latencyMarker maker) {
String key = _maker.vertexID_ +"-"+_maker.subtaskIndex_
LatencyHistogram sourceStats = latencyStats.get(key);
if sourceStats == null then
sourceStats = new LatencyHistogram(this.windowSize)
this.latencyStats.put(key, sourceStats)
this.metricGroup.histogram(key, sourceStats)
this.sourceStats.addValue(System.currentTimeMillis() - marker.getMarkedTime());
}
{code}
the *LatencyHistogram* extends org.apache.flink.metrics.Histogram, and wrap a
*DescriptiveStatistics* internally.
[~Zentol] [~rmetzger] [~aljoscha], what is your opinions here?
> LatencyGauge change to histogram metric
> ----------------------------------------
>
> Key: FLINK-7608
> URL: https://issues.apache.org/jira/browse/FLINK-7608
> Project: Flink
> Issue Type: Bug
> Components: Metrics
> Reporter: Hai Zhou UTC+8
> Assignee: Hai Zhou UTC+8
> Priority: Blocker
> Fix For: 1.4.0, 1.3.3
>
>
> I used slf4jReporter[https://issues.apache.org/jira/browse/FLINK-4831] to
> export metrics the log file.
> I found:
> {noformat}
> -- Gauges
> ---------------------------------------------------------------------
> ......
> zhouhai-mbp.taskmanager.f3fd3a269c8c3da4e8319c8f6a201a57.Flink Streaming
> Job.Map.0.latency:
> value={LatencySourceDescriptor{vertexID=1, subtaskIndex=-1}={p99=116.0,
> p50=59.5, min=11.0, max=116.0, p95=116.0, mean=61.833333333333336}}
> zhouhai-mbp.taskmanager.f3fd3a269c8c3da4e8319c8f6a201a57.Flink Streaming
> Job.Sink- Unnamed.0.latency:
> value={LatencySourceDescriptor{vertexID=1, subtaskIndex=0}={p99=195.0,
> p50=163.5, min=115.0, max=195.0, p95=195.0, mean=161.0}}
> ......
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)