private void recordStatus(WorkloadExecutionStatus status) { if (tpsStat.isEmpty()) { for (NodeId node : status.getNodes()) { NodeTpsRecorder recorder = new NodeTpsRecorder(20); recorder.recordStatus(0, 0, 0, systemClock.currentTimeMillis()); tpsStat.put(node, recorder); } return; } for (NodeId node : status.getNodes()) { NodeTpsRecorder nodeTpsRecorder = tpsStat.get(node); Integer delay = status.getDelay(node); Integer threads = status.getThreads(node); Integer samples = getSamples(status, node); Long pollTime = status.getPollTime(node); nodeTpsRecorder.recordStatus(threads, delay, samples, pollTime); } }
private Map<NodeId, WorkloadConfiguration> suggestConfigurationUpdate( WorkloadExecutionStatus status) { log.debug("Recording current status"); recordStatus(status); log.debug("Current status recorded"); log.debug("Going to recalculate desired tps per node"); Map<NodeId, BigDecimal> desiredTpsPerNode = tpsRouter.getDesiredTpsPerNode(tpsStat); log.debug("Desired tps per node recalculated"); log.debug("Desired tps per node is {}", desiredTpsPerNode); log.debug("Going to suggest new workload configurations for kernels"); Map<NodeId, WorkloadConfiguration> result = Maps.newHashMap(); for (NodeId node : status.getNodes()) { WorkloadConfiguration suggestion = workloadSuggestionMaker.suggest( desiredTpsPerNode.get(node), tpsStat.get(node), maxThreads); log.debug("Suggested {} for node {}", suggestion, node); result.put(node, suggestion); } return result; }