Package org.openjdk.jmh.profile
Class AbstractPerfAsmProfiler
java.lang.Object
org.openjdk.jmh.profile.AbstractPerfAsmProfiler
- All Implemented Interfaces:
ExternalProfiler
,Profiler
- Direct Known Subclasses:
DTraceAsmProfiler
,LinuxPerfAsmProfiler
,WinPerfAsmProfiler
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static class
(package private) static class
(package private) static class
(package private) static class
(package private) static class
protected static class
(package private) static class
(package private) static class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final int
private final boolean
private final boolean
protected final TempFile
private final boolean
private final int
private final int
private final boolean
protected final TempFile
protected final TempFile
private final boolean
private final int
private final double
private final int
private final int
private final boolean
private final String
private final String
private final boolean
private final String
private final String
private final boolean
private final String
private final String
protected final joptsimple.OptionSet
private final boolean
private final boolean
private final boolean
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
AbstractPerfAsmProfiler
(String initLine, String... events) -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addInterval
(List<Interval> intervals, long begAddr, long lastAddr, AbstractPerfAsmProfiler.Assembly asms) addJVMOptions
(BenchmarkParams params) Add JVM these options to the run.protected abstract void
addMyOptions
(joptsimple.OptionParser parser) Collection
<? extends Result> afterTrial
(BenchmarkResult br, long pid, File stdOut, File stdErr) Run this code after the trial is done.boolean
If target VM communicates with profiler with standard error, this method can be used to shun the output to console.boolean
If target VM communicates with profiler with standard output, this method can be used to shun the output to console.void
beforeTrial
(BenchmarkParams params) Run this code before starting the trial.figureHotIntervals
(SortedSet<Long> addrs, AbstractPerfAsmProfiler.Assembly asms) private List
<AbstractPerfAsmProfiler.Region> private boolean
maybeAddress
(String str) private long
parseAddress
(String address) protected abstract void
Parse profiler events from binary to text form.protected abstract String
Get perf binary data extension (optional).private void
private void
printDottedLine
(PrintWriter pw, String header) private static void
printLine
(PrintWriter pw, AbstractPerfAsmProfiler.PerfEvents events, String event, long count) private TextResult
private AbstractPerfAsmProfiler.Assembly
readAssembly
(File stdOut) protected abstract AbstractPerfAsmProfiler.PerfEvents
readEvents
(double skipMs, double lenMs) Read parsed events.private Collection
<Collection<String>> splitAssembly
(File stdOut) stripEventNames
(List<String> src) Some profilers strip modifiers from event names.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.openjdk.jmh.profile.ExternalProfiler
addJVMInvokeOptions
Methods inherited from interface org.openjdk.jmh.profile.Profiler
getDescription
-
Field Details
-
requestedEventNames
-
regionRateThreshold
private final double regionRateThreshold -
regionShowTop
private final int regionShowTop -
regionTooBigThreshold
private final int regionTooBigThreshold -
printMargin
private final int printMargin -
mergeMargin
private final int mergeMargin -
mergeMethods
private final boolean mergeMethods -
delayMsec
private final int delayMsec -
lengthMsec
private final int lengthMsec -
skipAssembly
private final boolean skipAssembly -
skipInterpreter
private final boolean skipInterpreter -
skipVMStubs
private final boolean skipVMStubs -
savePerfOutput
private final boolean savePerfOutput -
savePerfOutputTo
-
savePerfOutputToFile
-
savePerfBin
private final boolean savePerfBin -
savePerfBinTo
-
savePerfBinFile
-
saveLog
private final boolean saveLog -
saveLogTo
-
saveLogToFile
-
printCompilationInfo
private final boolean printCompilationInfo -
intelSyntax
private final boolean intelSyntax -
hsLog
-
perfBinData
-
perfParsedData
-
set
protected final joptsimple.OptionSet set -
drawIntraJumps
private final boolean drawIntraJumps -
drawInterJumps
private final boolean drawInterJumps
-
-
Constructor Details
-
AbstractPerfAsmProfiler
- Throws:
ProfilerException
-
-
Method Details
-
addMyOptions
protected abstract void addMyOptions(joptsimple.OptionParser parser) -
addJVMOptions
Description copied from interface:ExternalProfiler
Add JVM these options to the run.- Specified by:
addJVMOptions
in interfaceExternalProfiler
- Parameters:
params
- benchmark parameters used for current launch- Returns:
- options to add to JVM launch
-
beforeTrial
Description copied from interface:ExternalProfiler
Run this code before starting the trial. This method will execute before starting the benchmark JVM.- Specified by:
beforeTrial
in interfaceExternalProfiler
- Parameters:
params
- benchmark parameters used for current launch
-
afterTrial
public Collection<? extends Result> afterTrial(BenchmarkResult br, long pid, File stdOut, File stdErr) Description copied from interface:ExternalProfiler
Run this code after the trial is done. This method will execute after benchmark JVM had stopped.- Specified by:
afterTrial
in interfaceExternalProfiler
- Parameters:
br
- benchmark result that was the result of the trialpid
- pid that the forked JVM hadstdOut
- file containing the standard output from the benchmark JVMstdErr
- file containing the standard error from the benchmark JVM- Returns:
- profiler results
-
allowPrintOut
public boolean allowPrintOut()Description copied from interface:ExternalProfiler
If target VM communicates with profiler with standard output, this method can be used to shun the output to console. Profiler is responsible for consuming the standard output and printing the relevant data from there.- Specified by:
allowPrintOut
in interfaceExternalProfiler
- Returns:
- returns true, if profiler allows harness to print out the standard output
-
allowPrintErr
public boolean allowPrintErr()Description copied from interface:ExternalProfiler
If target VM communicates with profiler with standard error, this method can be used to shun the output to console. Profiler is responsible for consuming the standard error and printing the relevant data from there.- Specified by:
allowPrintErr
in interfaceExternalProfiler
- Returns:
- returns true, if profiler allows harness to print out the standard errpr
-
parseEvents
protected abstract void parseEvents()Parse profiler events from binary to text form. -
readEvents
Read parsed events.- Parameters:
skipMs
- Milliseconds to skip.lenMs
- Milliseconds to capture after skip- Returns:
- Events.
-
stripEventNames
Some profilers strip modifiers from event names. To properly match the events in shared code, we need to know what those events were stripped to.- Returns:
- stripped events
-
perfBinaryExtension
Get perf binary data extension (optional).- Returns:
- Extension.
-
processAssembly
-
printLine
private static void printLine(PrintWriter pw, AbstractPerfAsmProfiler.PerfEvents events, String event, long count) -
printDottedLine
-
printDottedLine
-
makeRegions
private List<AbstractPerfAsmProfiler.Region> makeRegions(AbstractPerfAsmProfiler.Assembly asms, AbstractPerfAsmProfiler.PerfEvents events) -
figureHotIntervals
private List<Interval> figureHotIntervals(SortedSet<Long> addrs, AbstractPerfAsmProfiler.Assembly asms) -
addInterval
private void addInterval(List<Interval> intervals, long begAddr, long lastAddr, AbstractPerfAsmProfiler.Assembly asms) -
splitAssembly
-
readAssembly
-
maybeAddress
-
parseAddress
-