< prev index next >

core/org.openjdk.jmc.flightrecorder.rules.jdk/src/main/java/org/openjdk/jmc/flightrecorder/rules/jdk/memory/LongGcPauseRule.java

Print this page




  60 import org.openjdk.jmc.flightrecorder.rules.jdk.messages.internal.Messages;
  61 import org.openjdk.jmc.flightrecorder.rules.util.JfrRuleTopics;
  62 import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit;
  63 import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit.EventAvailability;
  64 
  65 public class LongGcPauseRule implements IRule {
  66 
  67         private static final String RESULT_ID = "LongGcPause"; //$NON-NLS-1$
  68 
  69         public static final TypedPreference<IQuantity> GC_PAUSE_INFO_LIMIT = new TypedPreference<>("gc.pause.info.limit", //$NON-NLS-1$
  70                         Messages.getString(Messages.LongGcPauseRule_CONFIG_INFO_LIMIT),
  71                         Messages.getString(Messages.LongGcPauseRule_CONFIG_INFO_LIMIT_LONG), TIMESPAN,
  72                         UnitLookup.MILLISECOND.quantity(1000));
  73 
  74         private static final List<TypedPreference<?>> CONFIG_ATTRIBUTES = Arrays
  75                         .<TypedPreference<?>> asList(GC_PAUSE_INFO_LIMIT);
  76 
  77         private Result getResult(IItemCollection items, IPreferenceValueProvider vp) {
  78                 EventAvailability eventAvailability = RulesToolkit.getEventAvailability(items, JdkTypeIDs.GC_PAUSE,
  79                                 JdkTypeIDs.GC_CONF, JdkTypeIDs.HEAP_CONF, JdkTypeIDs.GC_PAUSE_L1);
  80                 if (eventAvailability == EventAvailability.DISABLED || eventAvailability == EventAvailability.UNAVAILABLE) {
  81                         return RulesToolkit.getEventAvailabilityResult(this, items, EventAvailability.DISABLED, JdkTypeIDs.GC_PAUSE,
  82                                         JdkTypeIDs.GC_CONF, JdkTypeIDs.HEAP_CONF, JdkTypeIDs.GC_PAUSE_L1);
  83                 }
  84                 IQuantity maxPause = items.getAggregate(JdkAggregators.LONGEST_GC_PAUSE);
  85                 if (maxPause != null) {
  86                         String message = MessageFormat.format(Messages.getString(Messages.LongGcPauseRuleFactory_TEXT_INFO),
  87                                         maxPause.displayUsing(IDisplayable.AUTO));
  88                         double gcPauseScore = RulesToolkit.mapExp74(maxPause.doubleValueIn(MILLISECOND),
  89                                         vp.getPreferenceValue(GC_PAUSE_INFO_LIMIT).doubleValueIn(MILLISECOND));
  90                         String longMessage = message;
  91                         if (gcPauseScore >= 25) {
  92                                 longMessage = appendMessage(longMessage, getLivesetMessage(items));
  93                                 longMessage = appendMessage(longMessage, getSemiRefsMessage(items));
  94                                 longMessage = appendMessage(longMessage, getCollectorMessage(items));
  95                         }
  96                         return new Result(this, gcPauseScore, message, longMessage);
  97                 }
  98                 return new Result(this, 0, Messages.getString(Messages.LongGcPauseRuleFactory_TEXT_OK));
  99         }
 100 




  60 import org.openjdk.jmc.flightrecorder.rules.jdk.messages.internal.Messages;
  61 import org.openjdk.jmc.flightrecorder.rules.util.JfrRuleTopics;
  62 import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit;
  63 import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit.EventAvailability;
  64 
  65 public class LongGcPauseRule implements IRule {
  66 
  67         private static final String RESULT_ID = "LongGcPause"; //$NON-NLS-1$
  68 
  69         public static final TypedPreference<IQuantity> GC_PAUSE_INFO_LIMIT = new TypedPreference<>("gc.pause.info.limit", //$NON-NLS-1$
  70                         Messages.getString(Messages.LongGcPauseRule_CONFIG_INFO_LIMIT),
  71                         Messages.getString(Messages.LongGcPauseRule_CONFIG_INFO_LIMIT_LONG), TIMESPAN,
  72                         UnitLookup.MILLISECOND.quantity(1000));
  73 
  74         private static final List<TypedPreference<?>> CONFIG_ATTRIBUTES = Arrays
  75                         .<TypedPreference<?>> asList(GC_PAUSE_INFO_LIMIT);
  76 
  77         private Result getResult(IItemCollection items, IPreferenceValueProvider vp) {
  78                 EventAvailability eventAvailability = RulesToolkit.getEventAvailability(items, JdkTypeIDs.GC_PAUSE,
  79                                 JdkTypeIDs.GC_CONF, JdkTypeIDs.HEAP_CONF, JdkTypeIDs.GC_PAUSE_L1);
  80                 if (eventAvailability == EventAvailability.DISABLED || eventAvailability == EventAvailability.UNKNOWN) {
  81                         return RulesToolkit.getEventAvailabilityResult(this, items, EventAvailability.DISABLED, JdkTypeIDs.GC_PAUSE,
  82                                         JdkTypeIDs.GC_CONF, JdkTypeIDs.HEAP_CONF, JdkTypeIDs.GC_PAUSE_L1);
  83                 }
  84                 IQuantity maxPause = items.getAggregate(JdkAggregators.LONGEST_GC_PAUSE);
  85                 if (maxPause != null) {
  86                         String message = MessageFormat.format(Messages.getString(Messages.LongGcPauseRuleFactory_TEXT_INFO),
  87                                         maxPause.displayUsing(IDisplayable.AUTO));
  88                         double gcPauseScore = RulesToolkit.mapExp74(maxPause.doubleValueIn(MILLISECOND),
  89                                         vp.getPreferenceValue(GC_PAUSE_INFO_LIMIT).doubleValueIn(MILLISECOND));
  90                         String longMessage = message;
  91                         if (gcPauseScore >= 25) {
  92                                 longMessage = appendMessage(longMessage, getLivesetMessage(items));
  93                                 longMessage = appendMessage(longMessage, getSemiRefsMessage(items));
  94                                 longMessage = appendMessage(longMessage, getCollectorMessage(items));
  95                         }
  96                         return new Result(this, gcPauseScore, message, longMessage);
  97                 }
  98                 return new Result(this, 0, Messages.getString(Messages.LongGcPauseRuleFactory_TEXT_OK));
  99         }
 100 


< prev index next >