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 * |