Skip to content

Commit 4e3f799

Browse files
committed
GH-242 - Allow to use a sampling period of 1ms for the Polyglot Sampler
1 parent 4141a35 commit 4e3f799

File tree

10 files changed

+40
-4
lines changed

10 files changed

+40
-4
lines changed

visualvm/profiling/manifest.mf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ AutoUpdate-Essential-Module: true
55
OpenIDE-Module-Layer: org/graalvm/visualvm/profiling/resources/layer.xml
66
OpenIDE-Module-Install: org/graalvm/visualvm/profiling/Installer.class
77
OpenIDE-Module-Localizing-Bundle: org/graalvm/visualvm/profiling/Bundle.properties
8-
OpenIDE-Module-Specification-Version: 2.1
8+
OpenIDE-Module-Specification-Version: 2.2
99

visualvm/profiling/src/org/graalvm/visualvm/profiling/presets/SamplerCPUPanel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ public void setEnabled(boolean enabled) {
285285
add(sampleRateLabel, constraints);
286286

287287
Integer[] samplingRates =
288-
new Integer[] { 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000 };
288+
new Integer[] { 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000 };
289289
sampleRateCombo = new JComboBox(samplingRates) {
290290
public Dimension getMinimumSize() { return getPreferredSize(); }
291291
public Dimension getMaximumSize() { return getPreferredSize(); }

visualvm/sampler.truffle/nbproject/project.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
<compile-dependency/>
9494
<run-dependency>
9595
<release-version>2</release-version>
96-
<specification-version>2.0</specification-version>
96+
<specification-version>2.2</specification-version>
9797
</run-dependency>
9898
</dependency>
9999
<dependency>

visualvm/sampler.truffle/src/org/graalvm/visualvm/sampler/truffle/AbstractSamplerSupport.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import org.graalvm.visualvm.core.ui.components.DataViewComponent;
2929
import java.util.Timer;
3030
import org.graalvm.visualvm.lib.common.ProfilingSettings;
31+
import org.graalvm.visualvm.lib.profiler.api.ProfilerDialogs;
32+
import org.openide.util.NbBundle;
3133

3234
/**
3335
*
@@ -45,6 +47,16 @@ public abstract class AbstractSamplerSupport {
4547

4648

4749
protected abstract Timer getTimer();
50+
51+
52+
protected final void checkCPUSamplingRate(int samplingRate) {
53+
if (samplingRate < 20)
54+
ProfilerDialogs.displayWarningDNSA(NbBundle.getMessage(AbstractSamplerSupport.class, "MSG_High_Sampling_Frequency"), // NOI18N
55+
NbBundle.getMessage(AbstractSamplerSupport.class, "CAP_High_Sampling_Frequency"), // NOI18N
56+
null,
57+
"org.graalvm.visualvm.sampler.truffle.AbstractSamplerSupport.checkCPUSamplingRate", // NOI18N
58+
false);
59+
}
4860

4961

5062
public static abstract class Refresher {

visualvm/sampler.truffle/src/org/graalvm/visualvm/sampler/truffle/Bundle.properties

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,3 +122,7 @@ MSG_ThreadMemory_unsupported=thread memory allocation not supported
122122
MSG_Incorrect_CPU_settings=Provided CPU settings are invalid.
123123

124124
MSG_Incorrect_Memory_settings=Provided Memory settings are invalid.
125+
126+
MSG_High_Sampling_Frequency=<html><br><b>Configured sampling frequency is high.</b><br><br>This may affect performance of the target application<br>and bias the collected results.<br><br></html>
127+
128+
CAP_High_Sampling_Frequency=High Sampling Frequency

visualvm/sampler.truffle/src/org/graalvm/visualvm/sampler/truffle/cpu/CPUSamplerSupport.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@ public void setOptions(String mode, boolean trackFlags) {
121121
}
122122

123123
public boolean startSampling(ProfilingSettings settings, int samplingRate, int refreshRate) {
124+
checkCPUSamplingRate(samplingRate);
125+
124126
GenericFilter sf = settings.getInstrumentationFilter();
125127
InstrumentationFilter filter = new InstrumentationFilter(sf);
126128
builder = snapshotDumper.getNewBuilder(filter);

visualvm/sampler/nbproject/project.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
<compile-dependency/>
9494
<run-dependency>
9595
<release-version>2</release-version>
96-
<specification-version>2.0</specification-version>
96+
<specification-version>2.2</specification-version>
9797
</run-dependency>
9898
</dependency>
9999
<dependency>

visualvm/sampler/src/org/graalvm/visualvm/sampler/AbstractSamplerSupport.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import org.graalvm.visualvm.core.ui.components.DataViewComponent;
2929
import java.util.Timer;
3030
import org.graalvm.visualvm.lib.common.ProfilingSettings;
31+
import org.graalvm.visualvm.lib.profiler.api.ProfilerDialogs;
32+
import org.openide.util.NbBundle;
3133

3234
/**
3335
*
@@ -45,6 +47,16 @@ public abstract class AbstractSamplerSupport {
4547

4648

4749
protected abstract Timer getTimer();
50+
51+
52+
protected final void checkCPUSamplingRate(int samplingRate) {
53+
if (samplingRate < 20)
54+
ProfilerDialogs.displayWarningDNSA(NbBundle.getMessage(AbstractSamplerSupport.class, "MSG_High_Sampling_Frequency"), // NOI18N
55+
NbBundle.getMessage(AbstractSamplerSupport.class, "CAP_High_Sampling_Frequency"), // NOI18N
56+
null,
57+
"org.graalvm.visualvm.sampler.AbstractSamplerSupport.checkCPUSamplingRate", // NOI18N
58+
false);
59+
}
4860

4961

5062
public static abstract class Refresher {

visualvm/sampler/src/org/graalvm/visualvm/sampler/Bundle.properties

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,7 @@ MSG_ThreadMemory_unsupported=thread memory allocation not supported
118118
MSG_Incorrect_CPU_settings=Provided CPU settings are invalid.
119119

120120
MSG_Incorrect_Memory_settings=Provided Memory settings are invalid.
121+
122+
MSG_High_Sampling_Frequency=<html><br><b>Configured sampling frequency is high.</b><br><br>This may affect performance of the target application<br>and bias the collected results.<br><br></html>
123+
124+
CAP_High_Sampling_Frequency=High Sampling Frequency

visualvm/sampler/src/org/graalvm/visualvm/sampler/cpu/CPUSamplerSupport.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,8 @@ public DataViewComponent.DetailsView[] getDetailsView() {
155155
}
156156

157157
public boolean startSampling(ProfilingSettings settings, int samplingRate, int refreshRate) {
158+
checkCPUSamplingRate(samplingRate);
159+
158160
GenericFilter sf = settings.getInstrumentationFilter();
159161
InstrumentationFilter filter = new InstrumentationFilter(sf);
160162
builder = snapshotDumper.getNewBuilder(filter, samplingRate);

0 commit comments

Comments
 (0)