Byte-Lab/JCoz

Figure out how to avoid overhead of progress points (from breakpoints)

Byte-Lab opened this issue · 2 comments

We have observed that setting a progress point can sometimes impede performance in the code around where the progress point was set. This can severely degrade the value of the profiler, as it can introduce significant probe effect due to the latency introduced from the JVMTI breakpoint.

One possible solution would be to expose a library to users that allows them to add a progress point (similar to how COZ does it, although they use a macro), and we could just set a breakpoint inside library function called by the user.

Another potentially better solution than exposing a library is to use annotations: https://docs.oracle.com/javase/tutorial/java/annotations/

I did a lot of work on this while I was at CMU. I found that bytecode replacement was not better than using breakpoints. I'm leaving this open for now because it's something we should work on, but I'm changing the tag to enhancement instead of bug because it only affects accuracy and not correctness.