[ 
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)

Reply via email to