public String formatIntervalPerformanceNumbers(String testId) { PerformanceStats latest = get(testId, false); if (latest.isEmpty() || latest.getOperationCount() < 1) { return ""; } String latencyUnit = "µs"; long latencyAvg = NANOSECONDS.toMicros(round(latest.getIntervalLatencyAvgNanos())); long latency999Percentile = NANOSECONDS.toMicros(latest.getIntervalLatency999PercentileNanos()); long latencyMax = NANOSECONDS.toMicros(latest.getIntervalLatencyMaxNanos()); if (latencyAvg > DISPLAY_LATENCY_AS_MICROS_MAX_VALUE) { latencyUnit = "ms"; latencyAvg = MICROSECONDS.toMillis(latencyAvg); latency999Percentile = MICROSECONDS.toMillis(latency999Percentile); latencyMax = MICROSECONDS.toMillis(latencyMax); } return format("%s ops %s ops/s %s %s (avg) %s %s (%sth) %s %s (max)", formatLong(latest.getOperationCount(), OPERATION_COUNT_FORMAT_LENGTH), formatDouble(latest.getIntervalThroughput(), THROUGHPUT_FORMAT_LENGTH), formatLong(latencyAvg, LATENCY_FORMAT_LENGTH), latencyUnit, formatLong(latency999Percentile, LATENCY_FORMAT_LENGTH), latencyUnit, INTERVAL_LATENCY_PERCENTILE, formatLong(latencyMax, LATENCY_FORMAT_LENGTH), latencyUnit); }
private void printLayout() { LOGGER.info(HORIZONTAL_RULER); LOGGER.info("Cluster layout"); LOGGER.info(HORIZONTAL_RULER); for (AgentWorkerLayout agentWorkerLayout : agentWorkerLayouts) { Set<String> agentVersionSpecs = agentWorkerLayout.getVersionSpecs(); int agentMemberWorkerCount = agentWorkerLayout.count(WorkerType.MEMBER); int agentClientWorkerCount = agentWorkerLayout.workerProcessSettingsList.size() - agentMemberWorkerCount; int totalWorkerCount = agentMemberWorkerCount + agentClientWorkerCount; String message = " Agent %s (%s) members: %s, clients: %s"; if (totalWorkerCount > 0) { message += ", mode: %s, version specs: %s"; } else { message += " (no workers)"; } LOGGER.info(format(message, agentWorkerLayout.agentData.formatIpAddresses(), agentWorkerLayout.agentData.getAddress(), formatLong(agentMemberWorkerCount, 2), formatLong(agentClientWorkerCount, 2), padLeft(agentWorkerLayout.agentData.getAgentWorkerMode().toString(), WORKER_MODE_LENGTH), agentVersionSpecs )); } }
public String detailedPerformanceInfo(String testId, long runningTimeMs) { PerformanceStats totalPerformanceStats = new PerformanceStats(); Map<SimulatorAddress, PerformanceStats> agentPerformanceStatsMap = new HashMap<SimulatorAddress, PerformanceStats>(); calculatePerformanceStats(testId, totalPerformanceStats, agentPerformanceStatsMap); long totalOperationCount = totalPerformanceStats.getOperationCount(); if (totalOperationCount < 1) { return "Performance information is not available!"; } double runningTimeSeconds = (runningTimeMs * 1d) / SECONDS.toMillis(1); StringBuilder sb = new StringBuilder(); sb.append(format("Total throughput %s%% %s ops %s ops/s\n", formatPercentage(1, 1), formatLong(totalOperationCount, OPERATION_COUNT_FORMAT_LENGTH), formatDouble(totalOperationCount / runningTimeSeconds, THROUGHPUT_FORMAT_LENGTH))); for (SimulatorAddress address : sort(agentPerformanceStatsMap.keySet())) { PerformanceStats performanceStats = agentPerformanceStatsMap.get(address); long operationCount = performanceStats.getOperationCount(); sb.append(format(" Agent %-15s %s%% %s ops %s ops/s\n", address, formatPercentage(operationCount, totalOperationCount), formatLong(operationCount, OPERATION_COUNT_FORMAT_LENGTH), formatDouble(operationCount / runningTimeSeconds, THROUGHPUT_FORMAT_LENGTH))); } return sb.toString(); }
agent.formatIpAddresses(), agent.getAddress(), formatLong(agentMemberWorkerCount, 2), formatLong(agentClientWorkerCount, 2), agentVersionSpecs)).append('\n');