[ https://issues.apache.org/jira/browse/HTRACE-376?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15357642#comment-15357642 ]
Colin Patrick McCabe commented on HTRACE-376: --------------------------------------------- Hi [~adriancole], Very interesting discussion as always! This brings to mind the famous distinction between accuracy and precision that tends to come up in statistics. We might be able to calculate the expected value of some random variable to 5 digits right of the decimal point, but if there is a wide variance in the probability distribution, we can say that our calculated expected value isn't very precise. I agree that our software's time measurements certainly becomes imprecise when we get down to nanoseconds. And displaying that value with high accuracy could be misleading. However, I think nanoseconds is still the way to go, for a few reasons: * Some systems are more precise than others. For example, some PC systems are configured to use the high-resolution timer (the HPET hardware) rather than the TSC hardware. Those systems will have more accuracy. If we artificially limit accuracy, we won't serve the more precise systems well. We don't really know what the limits of accuracy are, and we especially don't know what the accuracy limits of future systems might be. * A lot of times, people want to know about durations rather than absolute times. For example, [~pranavanc5e] is probably hoping to get some insight into things happening on a single node in Phoenix. For this purpose, it doesn't matter if the call to get the time has a fixed overhead. Since both the start and end time are shifted forward, the duration will still be in the ballpark. * People should be collecting a lot of trace data which should allow them to look at the variance in different values for the same span. People should also be exercising common sense and not reading too much into the duration difference between a 500 ns span and a 501 ns span. * People are not used to thinking in terms of microseconds because APIs tend to be in milliseconds or nanoseconds. bq. Moreover, eventhough unix can report time in microseconds using the presumably cheaper gettimeofday, it cannot in nanos. Hmm. I haven't seen anything suggesting {{gettimeofday}} is cheaper than {{clock_gettime}}. I thought they were both implemented via the VDSO hack on Linux, so their performance should be the same? At least on my system, the man page for {{gettimeofday}} says that's obsolete and {{clock_gettime}} should be used. > HTrace should support nanosecond time granularities > --------------------------------------------------- > > Key: HTRACE-376 > URL: https://issues.apache.org/jira/browse/HTRACE-376 > Project: HTrace > Issue Type: Improvement > Components: core > Affects Versions: 3.1.0 > Reporter: Colin Patrick McCabe > Assignee: Colin Patrick McCabe > Attachments: HTRACE-376.001.patch, HTRACE-376.002.patch, > HTRACE-376.003.patch > > > HTrace should support nanosecond time granularities. Currently only a > granularity of milliseconds is supported. -- This message was sent by Atlassian JIRA (v6.3.4#6332)