< prev index next >

core/org.openjdk.jmc.flightrecorder/src/main/java/org/openjdk/jmc/flightrecorder/jdk/JdkAggregators.java

Print this page




  96 
  97 import org.openjdk.jmc.common.item.Aggregators;
  98 import org.openjdk.jmc.common.item.IAccessorFactory;
  99 import org.openjdk.jmc.common.item.IAggregator;
 100 import org.openjdk.jmc.common.item.IAttribute;
 101 import org.openjdk.jmc.common.item.IMemberAccessor;
 102 import org.openjdk.jmc.common.item.IType;
 103 import org.openjdk.jmc.common.item.ItemFilters;
 104 import org.openjdk.jmc.common.unit.IQuantity;
 105 import org.openjdk.jmc.common.unit.UnitLookup;
 106 import org.openjdk.jmc.flightrecorder.JfrAttributes;
 107 import org.openjdk.jmc.flightrecorder.jdk.messages.internal.Messages;
 108 
 109 /**
 110  * Various useful aggregators based on JDK flight recorder data.
 111  */
 112 public final class JdkAggregators {
 113 
 114         // VM Info
 115         public static final IAggregator<String, ?> JVM_NAME = distinctAsString(VM_INFO, JdkAttributes.JVM_NAME);
 116         public static final IAggregator<IQuantity, ?> JVM_PID = min(JdkAttributes.JVM_PID.getName(), null,
 117                         VM_INFO, JdkAttributes.JVM_PID);
 118         public static final IAggregator<IQuantity, ?> JVM_START_TIME = min(JdkAttributes.JVM_START_TIME.getName(), null,
 119                         VM_INFO, JdkAttributes.JVM_START_TIME);
 120         public static final IAggregator<String, ?> JVM_VERSION = distinctAsString(VM_INFO, JdkAttributes.JVM_VERSION);
 121         public static final IAggregator<String, ?> JAVA_ARGUMENTS = distinctAsString(VM_INFO, JdkAttributes.JAVA_ARGUMENTS);
 122         public static final IAggregator<String, ?> JVM_ARGUMENTS = distinctAsString(VM_INFO, JdkAttributes.JVM_ARGUMENTS);
 123         
 124         public static final IAggregator<IQuantity, ?> JVM_SHUTDOWN_TIME = min(Messages.getString(Messages.ATTR_SHUTDOWN_TIME), null,
 125                         JdkTypeIDs.VM_SHUTDOWN, JfrAttributes.START_TIME);
 126         public static final IAggregator<String, ?> JVM_SHUTDOWN_REASON = distinctAsString(JdkTypeIDs.VM_SHUTDOWN,
 127                         JdkAttributes.SHUTDOWN_REASON);
 128         // CPU info
 129         public static final IAggregator<IQuantity, ?> MIN_HW_THREADS = min(HW_THREADS.getName(), null, CPU_INFORMATION,
 130                         HW_THREADS);
 131         public static final IAggregator<IQuantity, ?> MIN_NUMBER_OF_CORES = min(NUMBER_OF_CORES.getName(), null,
 132                         CPU_INFORMATION, NUMBER_OF_CORES);
 133         public static final IAggregator<IQuantity, ?> MIN_NUMBER_OF_SOCKETS = min(NUMBER_OF_SOCKETS.getName(), null,
 134                         CPU_INFORMATION, NUMBER_OF_SOCKETS);
 135         public static final IAggregator<String, ?> CPU_DESCRIPTION = distinctAsString(CPU_INFORMATION,
 136                         JdkAttributes.CPU_DESCRIPTION);
 137         public static final IAggregator<String, ?> CPU_TYPE = distinctAsString(CPU_INFORMATION, JdkAttributes.CPU_TYPE);
 138         // OS info
 139         public static final IAggregator<String, ?> OS_VERSION = distinctAsString(OS_INFORMATION, JdkAttributes.OS_VERSION);
 140         public static final IAggregator<IQuantity, ?> MAX_USED_MEMORY = max(
 141                         Messages.getString(Messages.AGGR_MAX_USED_MEMORY), null, OS_MEMORY_SUMMARY, JdkAttributes.OS_MEMORY_USED);
 142         public static final IAggregator<IQuantity, ?> MIN_TOTAL_MEMORY = min(
 143                         Messages.getString(Messages.AGGR_MIN_TOTAL_MEMORY), null, OS_MEMORY_SUMMARY, JdkAttributes.OS_MEMORY_TOTAL);
 144         // Heap config
 145         public static final IAggregator<IQuantity, ?> HEAP_CONF_MAX_SIZE = max(HEAP_MAX_SIZE.getName(), null, HEAP_CONF,


 210                         or(BOOLEAN_FLAG, FLAG_VALUE_BOOLEAN), ItemFilters.equals(FLAG_NAME, "UnlockExperimentalVMOptions")); //$NON-NLS-1$
 211         public static final IAggregator<Boolean, ?> IGNORE_UNRECOGNIZED_VM_OPTIONS = filter(
 212                         Messages.getString(Messages.AGGR_IGNORE_UNRECOGNIZED_VM_OPTIONS), null,
 213                         or(BOOLEAN_FLAG, FLAG_VALUE_BOOLEAN), ItemFilters.equals(FLAG_NAME, "IgnoreUnrecognizedVMOptions")); //$NON-NLS-1$
 214         public static final IAggregator<Boolean, ?> USE_STRING_DEDUPLICATION = filter("UseStringDeduplication", null, //$NON-NLS-1$
 215                         or(BOOLEAN_FLAG, FLAG_VALUE_BOOLEAN), ItemFilters.equals(FLAG_NAME, "UseStringDeduplication")); //$NON-NLS-1$
 216         public static final IAggregator<Boolean, ?> USE_G1_GC = filter("UseG1GC", null, //$NON-NLS-1$
 217                         or(BOOLEAN_FLAG, FLAG_VALUE_BOOLEAN), ItemFilters.equals(FLAG_NAME, "UseG1GC")); //$NON-NLS-1$
 218         public static final IAggregator<Boolean, ?> COMPACT_STRINGS = filter("CompactStrings", null, //$NON-NLS-1$
 219                         or(BOOLEAN_FLAG, FLAG_VALUE_BOOLEAN), ItemFilters.equals(FLAG_NAME, "CompactStrings")); //$NON-NLS-1$
 220         public static final IAggregator<IQuantity, ?> LARGEST_MAX_HEAP_SIZE_FROM_FLAG = filter(
 221                         Messages.getString(Messages.AGGR_LARGEST_MAX_HEAP_SIZE_FROM_FLAG), null, max(ULONG_FLAG, FLAG_VALUE_NUMBER),
 222                         ItemFilters.equals(FLAG_NAME, "MaxHeapSize")); //$NON-NLS-1$
 223         public static final IAggregator<IQuantity, ?> OUTSIDE_TLAB_COUNT = Aggregators.count(
 224                         Messages.getString(Messages.AGGR_OUTSIDE_TLAB_COUNT),
 225                         Messages.getString(Messages.AGGR_OUTSIDE_TLAB_COUNT_DESC), ALLOC_OUTSIDE_TLAB);
 226         public static final IAggregator<IQuantity, ?> INSIDE_TLAB_COUNT = Aggregators.count(
 227                         Messages.getString(Messages.AGGR_INSIDE_TLAB_COUNT),
 228                         Messages.getString(Messages.AGGR_INSIDE_TLAB_COUNT_DESC), ALLOC_INSIDE_TLAB);
 229         public static final IAggregator<IQuantity, ?> FILE_WRITE_LONGEST = Aggregators.max(FILE_WRITE, DURATION);
 230         public static final IAggregator<IQuantity, ?> FILE_WRITE_LARGEST = Aggregators.max(FILE_WRITE, IO_FILE_BYTES_WRITTEN);

 231         public static final IAggregator<IQuantity, ?> FILE_READ_LONGEST = Aggregators.max(FILE_READ, DURATION);
 232         public static final IAggregator<IQuantity, ?> FILE_READ_LARGEST = Aggregators.max(FILE_READ, IO_FILE_BYTES_READ);
 233         public static final IAggregator<IQuantity, ?> FILE_WRITE_SIZE = Aggregators.sum(
 234                         Messages.getString(Messages.AGGR_FILE_WRITE_SIZE), Messages.getString(Messages.AGGR_FILE_WRITE_SIZE_DESC),
 235                         FILE_WRITE, IO_FILE_BYTES_WRITTEN);
 236         public static final IAggregator<IQuantity, ?> FILE_READ_SIZE = Aggregators.sum(
 237                         Messages.getString(Messages.AGGR_FILE_READ_SIZE), Messages.getString(Messages.AGGR_FILE_READ_SIZE_DESC),
 238                         FILE_READ, IO_FILE_BYTES_READ);
 239         public static final IAggregator<IQuantity, ?> FILE_WRITE_COUNT = Aggregators.count(
 240                         Messages.getString(Messages.AGGR_FILE_WRITE_COUNT), Messages.getString(Messages.AGGR_FILE_WRITE_COUNT_DESC),
 241                         JdkFilters.FILE_WRITE);
 242         public static final IAggregator<IQuantity, ?> FILE_READ_COUNT = Aggregators.count(
 243                         Messages.getString(Messages.AGGR_FILE_READ_COUNT), Messages.getString(Messages.AGGR_FILE_READ_COUNT_DESC),
 244                         JdkFilters.FILE_READ);
 245         public static final IAggregator<IQuantity, ?> ERROR_COUNT = Aggregators.count(
 246                         Messages.getString(Messages.AGGR_ERROR_COUNT), Messages.getString(Messages.AGGR_ERROR_COUNT_DESC),
 247                         JdkFilters.ERRORS);
 248         public static final IAggregator<IQuantity, ?> EXCEPTIONS_COUNT = Aggregators.count(
 249                         Messages.getString(Messages.AGGR_EXCEPTIONS_COUNT), Messages.getString(Messages.AGGR_EXCEPTIONS_COUNT_DESC),
 250                         JdkFilters.EXCEPTIONS);
 251         public static final IAggregator<IQuantity, ?> THROWABLES_COUNT = Aggregators.count(
 252                         Messages.getString(Messages.AGGR_THROWABLES_COUNT), Messages.getString(Messages.AGGR_THROWABLES_COUNT_DESC),
 253                         JdkFilters.THROWABLES);
 254         public static final IAggregator<IQuantity, ?> CODE_CACHE_FULL_COUNT = Aggregators.count(
 255                         Messages.getString(Messages.AGGR_CODE_CACHE_FULL_COUNT),
 256                         Messages.getString(Messages.AGGR_CODE_CACHE_FULL_COUNT_DESC), CODE_CACHE_FULL);
 257         public static final IAggregator<IQuantity, ?> SOCKET_WRITE_LONGEST = Aggregators.max(SOCKET_WRITE, DURATION);
 258         public static final IAggregator<IQuantity, ?> SOCKET_WRITE_LARGEST = Aggregators.max(SOCKET_WRITE, IO_SOCKET_BYTES_WRITTEN);

 259         public static final IAggregator<IQuantity, ?> SOCKET_READ_LONGEST = Aggregators.max(SOCKET_READ, DURATION);
 260         public static final IAggregator<IQuantity, ?> SOCKET_READ_LARGEST = Aggregators.max(SOCKET_READ, IO_SOCKET_BYTES_READ);

 261         public static final IAggregator<IQuantity, ?> SOCKET_WRITE_SIZE = Aggregators.sum(
 262                         Messages.getString(Messages.AGGR_SOCKET_WRITE_SIZE),
 263                         Messages.getString(Messages.AGGR_SOCKET_WRITE_SIZE_DESC), SOCKET_WRITE, IO_SOCKET_BYTES_WRITTEN);
 264         public static final IAggregator<IQuantity, ?> SOCKET_READ_SIZE = Aggregators.sum(
 265                         Messages.getString(Messages.AGGR_SOCKET_READ_SIZE), Messages.getString(Messages.AGGR_SOCKET_READ_SIZE_DESC),
 266                         SOCKET_READ, IO_SOCKET_BYTES_READ);
 267         public static final IAggregator<IQuantity, ?> SOCKET_WRITE_COUNT = Aggregators.count(
 268                         Messages.getString(Messages.AGGR_SOCKET_WRITE_COUNT),
 269                         Messages.getString(Messages.AGGR_SOCKET_WRITE_COUNT_DESC), JdkFilters.SOCKET_WRITE);
 270         public static final IAggregator<IQuantity, ?> SOCKET_READ_COUNT = Aggregators.count(
 271                         Messages.getString(Messages.AGGR_SOCKET_READ_COUNT),
 272                         Messages.getString(Messages.AGGR_SOCKET_READ_COUNT_DESC), JdkFilters.SOCKET_READ);
 273         public static final IAggregator<IQuantity, ?> NUMBER_OF_DISTINCT_PORTS = Aggregators
 274                         .filter(Aggregators.countDistinct(Messages.getString(Messages.AGGR_NUMBER_OF_DISTINCT_PORTS),
 275                                         Messages.getString(Messages.AGGR_NUMBER_OF_DISTINCT_PORTS_DESC), IO_PORT), SOCKET_READ_OR_WRITE);
 276         public static final IAggregator<IQuantity, ?> NUMBER_OF_DISTINCT_HOSTS = Aggregators
 277                         .filter(Aggregators.countDistinct(Messages.getString(Messages.AGGR_NUMBER_OF_DISTINCT_HOSTS),
 278                                         Messages.getString(Messages.AGGR_NUMBER_OF_DISTINCT_HOSTS_DESC), IO_ADDRESS), SOCKET_READ_OR_WRITE);
 279         public static final IAggregator<String, ?> HOST_NAMES_DISTINCT = Aggregators
 280                         .filter(Aggregators.distinctAsString(IO_HOST, ","), SOCKET_READ_OR_WRITE); //$NON-NLS-1$


 401                         Messages.getString(Messages.AGGR_VM_OPERATION_COUNT_DESC), JdkFilters.VM_OPERATIONS);
 402         public static final IAggregator<IQuantity, ?> VM_OPERATION_DURATION = Aggregators.sum(
 403                         Messages.getString(Messages.AGGR_VM_OPERATION_DURATION),
 404                         Messages.getString(Messages.AGGR_VM_OPERATION_DURATION_DESC), JfrAttributes.DURATION);
 405 
 406         public static final IAggregator<IQuantity, ?> COMPILATIONS_COUNT = Aggregators.count(
 407                         Messages.getString(Messages.AGGR_COMPILATIONS_COUNT),
 408                         Messages.getString(Messages.AGGR_COMPILATIONS_COUNT_DESC), JdkFilters.COMPILATION);
 409         public static final IAggregator<IQuantity, ?> LONGEST_COMPILATION = Aggregators.filter(Aggregators.max(DURATION),
 410                         JdkFilters.COMPILATION);
 411 
 412         public static final IAggregator<String, ?> DUMP_REASON = distinctAsString(JdkTypeIDs.DUMP_REASON,
 413                         JdkAttributes.DUMP_REASON);
 414 
 415         public static final IAggregator<IQuantity, ?> ADDRESSES_COUNT = Aggregators.countDistinct(
 416                         Messages.getString(Messages.AGGR_ADDRESSES_COUNT), Messages.getString(Messages.AGGR_ADDRESSES_COUNT_DESC),
 417                         JdkAttributes.MONITOR_ADDRESS);
 418         public static final IAggregator<IQuantity, ?> OLD_OBJECT_ADDRESSES_COUNT = Aggregators.countDistinct(
 419                         Messages.getString(Messages.AGGR_ADDRESSES_COUNT), Messages.getString(Messages.AGGR_ADDRESSES_COUNT_DESC),
 420                         JdkAttributes.OLD_OBJECT_ADDRESS);





 421 
 422         /**
 423          * Aggregator for getting the first value, ie. the value from the event with the first occurring
 424          * start time.
 425          *
 426          * @param attribute
 427          *            attribute to get value from
 428          * @return the value provided by the very first event
 429          */
 430         public static <V> IAggregator<V, ?> first(IAttribute<V> attribute) {
 431                 return new Aggregators.AdvancedMinAggregator<>(
 432                                 MessageFormat.format(Messages.getString(Messages.AGGR_FIRST_ATTRIBUTE), attribute.getName()),
 433                                 MessageFormat.format(Messages.getString(Messages.AGGR_FIRST_ATTRIBUTE_DESC), attribute.getName()),
 434                                 attribute, JfrAttributes.START_TIME);
 435         }
 436 
 437         /**
 438          * Aggregator for getting the last value, ie. the value from the event with the last occurring
 439          * end time.
 440          *


  96 
  97 import org.openjdk.jmc.common.item.Aggregators;
  98 import org.openjdk.jmc.common.item.IAccessorFactory;
  99 import org.openjdk.jmc.common.item.IAggregator;
 100 import org.openjdk.jmc.common.item.IAttribute;
 101 import org.openjdk.jmc.common.item.IMemberAccessor;
 102 import org.openjdk.jmc.common.item.IType;
 103 import org.openjdk.jmc.common.item.ItemFilters;
 104 import org.openjdk.jmc.common.unit.IQuantity;
 105 import org.openjdk.jmc.common.unit.UnitLookup;
 106 import org.openjdk.jmc.flightrecorder.JfrAttributes;
 107 import org.openjdk.jmc.flightrecorder.jdk.messages.internal.Messages;
 108 
 109 /**
 110  * Various useful aggregators based on JDK flight recorder data.
 111  */
 112 public final class JdkAggregators {
 113 
 114         // VM Info
 115         public static final IAggregator<String, ?> JVM_NAME = distinctAsString(VM_INFO, JdkAttributes.JVM_NAME);
 116         public static final IAggregator<IQuantity, ?> JVM_PID = min(JdkAttributes.JVM_PID.getName(), null, VM_INFO,
 117                         JdkAttributes.JVM_PID);
 118         public static final IAggregator<IQuantity, ?> JVM_START_TIME = min(JdkAttributes.JVM_START_TIME.getName(), null,
 119                         VM_INFO, JdkAttributes.JVM_START_TIME);
 120         public static final IAggregator<String, ?> JVM_VERSION = distinctAsString(VM_INFO, JdkAttributes.JVM_VERSION);
 121         public static final IAggregator<String, ?> JAVA_ARGUMENTS = distinctAsString(VM_INFO, JdkAttributes.JAVA_ARGUMENTS);
 122         public static final IAggregator<String, ?> JVM_ARGUMENTS = distinctAsString(VM_INFO, JdkAttributes.JVM_ARGUMENTS);
 123 
 124         public static final IAggregator<IQuantity, ?> JVM_SHUTDOWN_TIME = min(
 125                         Messages.getString(Messages.ATTR_SHUTDOWN_TIME), null, JdkTypeIDs.VM_SHUTDOWN, JfrAttributes.START_TIME);
 126         public static final IAggregator<String, ?> JVM_SHUTDOWN_REASON = distinctAsString(JdkTypeIDs.VM_SHUTDOWN,
 127                         JdkAttributes.SHUTDOWN_REASON);
 128         // CPU info
 129         public static final IAggregator<IQuantity, ?> MIN_HW_THREADS = min(HW_THREADS.getName(), null, CPU_INFORMATION,
 130                         HW_THREADS);
 131         public static final IAggregator<IQuantity, ?> MIN_NUMBER_OF_CORES = min(NUMBER_OF_CORES.getName(), null,
 132                         CPU_INFORMATION, NUMBER_OF_CORES);
 133         public static final IAggregator<IQuantity, ?> MIN_NUMBER_OF_SOCKETS = min(NUMBER_OF_SOCKETS.getName(), null,
 134                         CPU_INFORMATION, NUMBER_OF_SOCKETS);
 135         public static final IAggregator<String, ?> CPU_DESCRIPTION = distinctAsString(CPU_INFORMATION,
 136                         JdkAttributes.CPU_DESCRIPTION);
 137         public static final IAggregator<String, ?> CPU_TYPE = distinctAsString(CPU_INFORMATION, JdkAttributes.CPU_TYPE);
 138         // OS info
 139         public static final IAggregator<String, ?> OS_VERSION = distinctAsString(OS_INFORMATION, JdkAttributes.OS_VERSION);
 140         public static final IAggregator<IQuantity, ?> MAX_USED_MEMORY = max(
 141                         Messages.getString(Messages.AGGR_MAX_USED_MEMORY), null, OS_MEMORY_SUMMARY, JdkAttributes.OS_MEMORY_USED);
 142         public static final IAggregator<IQuantity, ?> MIN_TOTAL_MEMORY = min(
 143                         Messages.getString(Messages.AGGR_MIN_TOTAL_MEMORY), null, OS_MEMORY_SUMMARY, JdkAttributes.OS_MEMORY_TOTAL);
 144         // Heap config
 145         public static final IAggregator<IQuantity, ?> HEAP_CONF_MAX_SIZE = max(HEAP_MAX_SIZE.getName(), null, HEAP_CONF,


 210                         or(BOOLEAN_FLAG, FLAG_VALUE_BOOLEAN), ItemFilters.equals(FLAG_NAME, "UnlockExperimentalVMOptions")); //$NON-NLS-1$
 211         public static final IAggregator<Boolean, ?> IGNORE_UNRECOGNIZED_VM_OPTIONS = filter(
 212                         Messages.getString(Messages.AGGR_IGNORE_UNRECOGNIZED_VM_OPTIONS), null,
 213                         or(BOOLEAN_FLAG, FLAG_VALUE_BOOLEAN), ItemFilters.equals(FLAG_NAME, "IgnoreUnrecognizedVMOptions")); //$NON-NLS-1$
 214         public static final IAggregator<Boolean, ?> USE_STRING_DEDUPLICATION = filter("UseStringDeduplication", null, //$NON-NLS-1$
 215                         or(BOOLEAN_FLAG, FLAG_VALUE_BOOLEAN), ItemFilters.equals(FLAG_NAME, "UseStringDeduplication")); //$NON-NLS-1$
 216         public static final IAggregator<Boolean, ?> USE_G1_GC = filter("UseG1GC", null, //$NON-NLS-1$
 217                         or(BOOLEAN_FLAG, FLAG_VALUE_BOOLEAN), ItemFilters.equals(FLAG_NAME, "UseG1GC")); //$NON-NLS-1$
 218         public static final IAggregator<Boolean, ?> COMPACT_STRINGS = filter("CompactStrings", null, //$NON-NLS-1$
 219                         or(BOOLEAN_FLAG, FLAG_VALUE_BOOLEAN), ItemFilters.equals(FLAG_NAME, "CompactStrings")); //$NON-NLS-1$
 220         public static final IAggregator<IQuantity, ?> LARGEST_MAX_HEAP_SIZE_FROM_FLAG = filter(
 221                         Messages.getString(Messages.AGGR_LARGEST_MAX_HEAP_SIZE_FROM_FLAG), null, max(ULONG_FLAG, FLAG_VALUE_NUMBER),
 222                         ItemFilters.equals(FLAG_NAME, "MaxHeapSize")); //$NON-NLS-1$
 223         public static final IAggregator<IQuantity, ?> OUTSIDE_TLAB_COUNT = Aggregators.count(
 224                         Messages.getString(Messages.AGGR_OUTSIDE_TLAB_COUNT),
 225                         Messages.getString(Messages.AGGR_OUTSIDE_TLAB_COUNT_DESC), ALLOC_OUTSIDE_TLAB);
 226         public static final IAggregator<IQuantity, ?> INSIDE_TLAB_COUNT = Aggregators.count(
 227                         Messages.getString(Messages.AGGR_INSIDE_TLAB_COUNT),
 228                         Messages.getString(Messages.AGGR_INSIDE_TLAB_COUNT_DESC), ALLOC_INSIDE_TLAB);
 229         public static final IAggregator<IQuantity, ?> FILE_WRITE_LONGEST = Aggregators.max(FILE_WRITE, DURATION);
 230         public static final IAggregator<IQuantity, ?> FILE_WRITE_LARGEST = Aggregators.max(FILE_WRITE,
 231                         IO_FILE_BYTES_WRITTEN);
 232         public static final IAggregator<IQuantity, ?> FILE_READ_LONGEST = Aggregators.max(FILE_READ, DURATION);
 233         public static final IAggregator<IQuantity, ?> FILE_READ_LARGEST = Aggregators.max(FILE_READ, IO_FILE_BYTES_READ);
 234         public static final IAggregator<IQuantity, ?> FILE_WRITE_SIZE = Aggregators.sum(
 235                         Messages.getString(Messages.AGGR_FILE_WRITE_SIZE), Messages.getString(Messages.AGGR_FILE_WRITE_SIZE_DESC),
 236                         FILE_WRITE, IO_FILE_BYTES_WRITTEN);
 237         public static final IAggregator<IQuantity, ?> FILE_READ_SIZE = Aggregators.sum(
 238                         Messages.getString(Messages.AGGR_FILE_READ_SIZE), Messages.getString(Messages.AGGR_FILE_READ_SIZE_DESC),
 239                         FILE_READ, IO_FILE_BYTES_READ);
 240         public static final IAggregator<IQuantity, ?> FILE_WRITE_COUNT = Aggregators.count(
 241                         Messages.getString(Messages.AGGR_FILE_WRITE_COUNT), Messages.getString(Messages.AGGR_FILE_WRITE_COUNT_DESC),
 242                         JdkFilters.FILE_WRITE);
 243         public static final IAggregator<IQuantity, ?> FILE_READ_COUNT = Aggregators.count(
 244                         Messages.getString(Messages.AGGR_FILE_READ_COUNT), Messages.getString(Messages.AGGR_FILE_READ_COUNT_DESC),
 245                         JdkFilters.FILE_READ);
 246         public static final IAggregator<IQuantity, ?> ERROR_COUNT = Aggregators.count(
 247                         Messages.getString(Messages.AGGR_ERROR_COUNT), Messages.getString(Messages.AGGR_ERROR_COUNT_DESC),
 248                         JdkFilters.ERRORS);
 249         public static final IAggregator<IQuantity, ?> EXCEPTIONS_COUNT = Aggregators.count(
 250                         Messages.getString(Messages.AGGR_EXCEPTIONS_COUNT), Messages.getString(Messages.AGGR_EXCEPTIONS_COUNT_DESC),
 251                         JdkFilters.EXCEPTIONS);
 252         public static final IAggregator<IQuantity, ?> THROWABLES_COUNT = Aggregators.count(
 253                         Messages.getString(Messages.AGGR_THROWABLES_COUNT), Messages.getString(Messages.AGGR_THROWABLES_COUNT_DESC),
 254                         JdkFilters.THROWABLES);
 255         public static final IAggregator<IQuantity, ?> CODE_CACHE_FULL_COUNT = Aggregators.count(
 256                         Messages.getString(Messages.AGGR_CODE_CACHE_FULL_COUNT),
 257                         Messages.getString(Messages.AGGR_CODE_CACHE_FULL_COUNT_DESC), CODE_CACHE_FULL);
 258         public static final IAggregator<IQuantity, ?> SOCKET_WRITE_LONGEST = Aggregators.max(SOCKET_WRITE, DURATION);
 259         public static final IAggregator<IQuantity, ?> SOCKET_WRITE_LARGEST = Aggregators.max(SOCKET_WRITE,
 260                         IO_SOCKET_BYTES_WRITTEN);
 261         public static final IAggregator<IQuantity, ?> SOCKET_READ_LONGEST = Aggregators.max(SOCKET_READ, DURATION);
 262         public static final IAggregator<IQuantity, ?> SOCKET_READ_LARGEST = Aggregators.max(SOCKET_READ,
 263                         IO_SOCKET_BYTES_READ);
 264         public static final IAggregator<IQuantity, ?> SOCKET_WRITE_SIZE = Aggregators.sum(
 265                         Messages.getString(Messages.AGGR_SOCKET_WRITE_SIZE),
 266                         Messages.getString(Messages.AGGR_SOCKET_WRITE_SIZE_DESC), SOCKET_WRITE, IO_SOCKET_BYTES_WRITTEN);
 267         public static final IAggregator<IQuantity, ?> SOCKET_READ_SIZE = Aggregators.sum(
 268                         Messages.getString(Messages.AGGR_SOCKET_READ_SIZE), Messages.getString(Messages.AGGR_SOCKET_READ_SIZE_DESC),
 269                         SOCKET_READ, IO_SOCKET_BYTES_READ);
 270         public static final IAggregator<IQuantity, ?> SOCKET_WRITE_COUNT = Aggregators.count(
 271                         Messages.getString(Messages.AGGR_SOCKET_WRITE_COUNT),
 272                         Messages.getString(Messages.AGGR_SOCKET_WRITE_COUNT_DESC), JdkFilters.SOCKET_WRITE);
 273         public static final IAggregator<IQuantity, ?> SOCKET_READ_COUNT = Aggregators.count(
 274                         Messages.getString(Messages.AGGR_SOCKET_READ_COUNT),
 275                         Messages.getString(Messages.AGGR_SOCKET_READ_COUNT_DESC), JdkFilters.SOCKET_READ);
 276         public static final IAggregator<IQuantity, ?> NUMBER_OF_DISTINCT_PORTS = Aggregators
 277                         .filter(Aggregators.countDistinct(Messages.getString(Messages.AGGR_NUMBER_OF_DISTINCT_PORTS),
 278                                         Messages.getString(Messages.AGGR_NUMBER_OF_DISTINCT_PORTS_DESC), IO_PORT), SOCKET_READ_OR_WRITE);
 279         public static final IAggregator<IQuantity, ?> NUMBER_OF_DISTINCT_HOSTS = Aggregators
 280                         .filter(Aggregators.countDistinct(Messages.getString(Messages.AGGR_NUMBER_OF_DISTINCT_HOSTS),
 281                                         Messages.getString(Messages.AGGR_NUMBER_OF_DISTINCT_HOSTS_DESC), IO_ADDRESS), SOCKET_READ_OR_WRITE);
 282         public static final IAggregator<String, ?> HOST_NAMES_DISTINCT = Aggregators
 283                         .filter(Aggregators.distinctAsString(IO_HOST, ","), SOCKET_READ_OR_WRITE); //$NON-NLS-1$


 404                         Messages.getString(Messages.AGGR_VM_OPERATION_COUNT_DESC), JdkFilters.VM_OPERATIONS);
 405         public static final IAggregator<IQuantity, ?> VM_OPERATION_DURATION = Aggregators.sum(
 406                         Messages.getString(Messages.AGGR_VM_OPERATION_DURATION),
 407                         Messages.getString(Messages.AGGR_VM_OPERATION_DURATION_DESC), JfrAttributes.DURATION);
 408 
 409         public static final IAggregator<IQuantity, ?> COMPILATIONS_COUNT = Aggregators.count(
 410                         Messages.getString(Messages.AGGR_COMPILATIONS_COUNT),
 411                         Messages.getString(Messages.AGGR_COMPILATIONS_COUNT_DESC), JdkFilters.COMPILATION);
 412         public static final IAggregator<IQuantity, ?> LONGEST_COMPILATION = Aggregators.filter(Aggregators.max(DURATION),
 413                         JdkFilters.COMPILATION);
 414 
 415         public static final IAggregator<String, ?> DUMP_REASON = distinctAsString(JdkTypeIDs.DUMP_REASON,
 416                         JdkAttributes.DUMP_REASON);
 417 
 418         public static final IAggregator<IQuantity, ?> ADDRESSES_COUNT = Aggregators.countDistinct(
 419                         Messages.getString(Messages.AGGR_ADDRESSES_COUNT), Messages.getString(Messages.AGGR_ADDRESSES_COUNT_DESC),
 420                         JdkAttributes.MONITOR_ADDRESS);
 421         public static final IAggregator<IQuantity, ?> OLD_OBJECT_ADDRESSES_COUNT = Aggregators.countDistinct(
 422                         Messages.getString(Messages.AGGR_ADDRESSES_COUNT), Messages.getString(Messages.AGGR_ADDRESSES_COUNT_DESC),
 423                         JdkAttributes.OLD_OBJECT_ADDRESS);
 424 
 425         public static final IAggregator<?, ?> BASE_ADDRESS = Aggregators.min(JdkTypeIDs.NATIVE_LIBRARY,
 426                         JdkAttributes.BASE_ADDRESS);
 427         public static final IAggregator<?, ?> TOP_ADDRESS = Aggregators.min(JdkTypeIDs.NATIVE_LIBRARY,
 428                         JdkAttributes.TOP_ADDRESS);
 429 
 430         /**
 431          * Aggregator for getting the first value, ie. the value from the event with the first occurring
 432          * start time.
 433          *
 434          * @param attribute
 435          *            attribute to get value from
 436          * @return the value provided by the very first event
 437          */
 438         public static <V> IAggregator<V, ?> first(IAttribute<V> attribute) {
 439                 return new Aggregators.AdvancedMinAggregator<>(
 440                                 MessageFormat.format(Messages.getString(Messages.AGGR_FIRST_ATTRIBUTE), attribute.getName()),
 441                                 MessageFormat.format(Messages.getString(Messages.AGGR_FIRST_ATTRIBUTE_DESC), attribute.getName()),
 442                                 attribute, JfrAttributes.START_TIME);
 443         }
 444 
 445         /**
 446          * Aggregator for getting the last value, ie. the value from the event with the last occurring
 447          * end time.
 448          *
< prev index next >