Nathan,

 

You mentioned that it was clojure startup time that you want to improve. Is 
it a general "all clojure apps" issue or "our clojure apps?" What are 
typical times for the entire startup that you observe? What do the clojure 
apps actually do?

 

Some points:

 

*Precision/noise:* 

As Kirk described, calling System.nanoTime() costs about 28 nanos on a one 
year old Haswell CPU. It just doesn't work to use it to measure operations 
that themselves take tens or hundreds of nanos.

 

*Skewing *

Martin Thompson alluded to how measurement can skew behavior of the 
underlying system. JMH can’t avoid the Heisenberg effect. Perf-map reduces 
Heisenberg cost because you are tracing from outside the process (but still 
on the host). Taking measurements out-of-band is the only way I know to 
avoid Heisenberg

 

*Host issues*

When you said "spin up a linux box" did you mean a physical box, not a VM 
or container?

I've had a bunch of consulting projects that were different variations on 
“performance issues that only occur in environment X or on hardware Y”. It 
common for people to assume “performance is relative. If this is a hotspot 
here it will be a hotspot here”

 

All of the points described here require that you have root access to 
physical hosts that are representative of your target hardware. In larger 
(and some small) shops this isn’t always easy to get.

On Saturday, September 23, 2017 at 10:51:52 AM UTC-4, Nathan Fisher wrote:
>
> Thank-you I ran across an article by Brandon Gregg and was just starting 
> to dig into honest-profiler. Looks like I'll spin up a linux box instead to 
> use perf-map-agent.
>
>
> http://www.brendangregg.com/blog/2014-06-09/java-cpu-sampling-using-hprof.html
>
>
> On Sat, 23 Sep 2017 at 14:58 Martin Thompson <[email protected] 
> <javascript:>> wrote:
>
>> This approach to measurement is likely to skew the results. I'd start 
>> with perf record via perf-map-agent and then use flame graphs.
>>
>>
>> http://psy-lob-saw.blogspot.co.uk/2017/02/flamegraphs-intro-fire-for-everyone.html
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "mechanical-sympathy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
> -- 
> - sent from my mobile
>

-- 
You received this message because you are subscribed to the Google Groups 
"mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to