[
https://issues.apache.org/jira/browse/SAMZA-349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14116417#comment-14116417
]
Martin Kleppmann commented on SAMZA-349:
----------------------------------------
Late to the party, but still got a few questions:
# Did you benchmark/profile this? I'm a little concerned that if we're keeping
every single timer event within a 30 sec interval (not downsampling), the
memory and CPU overhead could become significant. The reservoir might well end
up containing several million values.
# Did you consider using System.nanoTime() instead of
System.currentTimeMillis()? For many jobs, a call to process() will hopefully
take less than a millisecond, so a millisecond-resolution timer metric would be
useless.
# Were you planning to add percentile metrics? If not, you don't really need a
reservoir and snapshots (eg. the mean can be calculated just with a running sum
and count).
# Suggestion: it would be useful to add "utilization" (aka "duty cycle") as a
metric, which is the sum of all the timings divided by the window length. That
can tell you how much idle time there is in the event loop (how much headroom
before the job will start falling behind).
> add timer in metrics
> --------------------
>
> Key: SAMZA-349
> URL: https://issues.apache.org/jira/browse/SAMZA-349
> Project: Samza
> Issue Type: Bug
> Reporter: Yan Fang
> Assignee: Yan Fang
> Attachments: SAMZA-349.1.patch, SAMZA-349.2.patch, SAMZA-349.3.patch,
> SAMZA-349.patch, SAMZA-349.patch
>
>
> If my understanding is correct, the metrics we provide are for every 60
> seconds and all counters will be reset every 60 seconds. Current the
> MetricsSnapshotReporter seems missing this implementation. It sends out the
> metrics every 60 seconds but does not reset the counter value.
> {code}
> registry.getGroup(group).foreach {
> case (name, metric) =>
> metric.visit(new MetricsVisitor {
> def counter(counter: Counter) = groupMsg.put(name,
> counter.getCount: java.lang.Long)
> def gauge[T](gauge: Gauge[T]) = groupMsg.put(name,
> gauge.getValue.asInstanceOf[Object])
> })
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)