That's what the sampling code does - it holds an AtomicLongArray of fixed length, and updates the values in there randomly. There's also an ExponentiallyDecayingSample which biases the collection of values towards more recent entries, for the 5-minute and 15-minute window averages. You can see the patch here:
https://issues.apache.org/jira/secure/attachment/12562854/SOLR-1972_forked-metrics.patch TBH, I'm not even sure we need a ThreadLocal random here, though. Are there likely to be thread-safety issues when generating random numbers? On 2 Jan 2013, at 09:24, Dawid Weiss wrote: >> It's used in the statistics package for sampling. The Histogram class holds >> a pool of values for calculating means and variances from a stream of data, >> and uses the ThreadLocalRandom to determine whether or not a new value will >> be added to the pool. > > You probably have talked about it but just to mention -- wouldn't an > algorithmic solution the type of rrd be better than collecting all the > individual samples? Depending on the stats you need of course. From > what I can remember rrd only stores a fixed size buffers so it's very > memory efficient. > > http://code.google.com/p/rrd4j/ > >> This is copied directly from the existing metrics code, and it's quite >> possible that there's already something in Lucene that I could use instead. >> Which would also clear up the license header problem. :-) > > There isn't in the main codebase I think. A congruential Random should > be pretty trivial to write though (since it's described in the JavaDoc > of Random itself). Doug's ThreadLocal version is useful but if your > code allows it you could just pass individual per-thread Random > instances to any interested code and not deal with ThreadLocals at > all. > > There is also a number of Random implementations in commons-math and > they're definitely Apache licensed :) > http://commons.apache.org/math/userguide/random.html > > D. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
