Esempio n. 1
0
  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);
    }
  }
Esempio n. 2
0
  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;
  }