示例#1
0
 public CounterStat getOutputPositions() {
   CounterStat stat = new CounterStat();
   stat.merge(outputPositions);
   for (DriverContext driver : drivers) {
     stat.merge(driver.getOutputPositions());
   }
   return stat;
 }
示例#2
0
 public CounterStat getOutputDataSize() {
   CounterStat stat = new CounterStat();
   stat.merge(outputDataSize);
   for (DriverContext driver : drivers) {
     stat.merge(driver.getOutputDataSize());
   }
   return stat;
 }
示例#3
0
 public CounterStat getOutputPositions() {
   CounterStat stat = new CounterStat();
   for (PipelineContext pipelineContext : pipelineContexts) {
     if (pipelineContext.isOutputPipeline()) {
       stat.merge(pipelineContext.getOutputPositions());
     }
   }
   return stat;
 }
示例#4
0
 public CounterStat getInputDataSize() {
   CounterStat stat = new CounterStat();
   for (PipelineContext pipelineContext : pipelineContexts) {
     if (pipelineContext.isInputPipeline()) {
       stat.merge(pipelineContext.getInputDataSize());
     }
   }
   return stat;
 }
示例#5
0
  public void driverFinished(DriverContext driverContext) {
    checkNotNull(driverContext, "driverContext is null");

    if (!drivers.remove(driverContext)) {
      throw new IllegalArgumentException("Unknown driver " + driverContext);
    }

    DriverStats driverStats = driverContext.getDriverStats();

    completedDrivers.getAndIncrement();

    // remove the memory reservation
    memoryReservation.getAndAdd(-driverStats.getMemoryReservation().toBytes());

    queuedTime.add(driverStats.getQueuedTime().roundTo(NANOSECONDS));
    elapsedTime.add(driverStats.getElapsedTime().roundTo(NANOSECONDS));

    totalScheduledTime.getAndAdd(driverStats.getTotalScheduledTime().roundTo(NANOSECONDS));
    totalCpuTime.getAndAdd(driverStats.getTotalCpuTime().roundTo(NANOSECONDS));
    totalUserTime.getAndAdd(driverStats.getTotalUserTime().roundTo(NANOSECONDS));

    totalBlockedTime.getAndAdd(driverStats.getTotalBlockedTime().roundTo(NANOSECONDS));

    // merge the operator stats into the operator summary
    List<OperatorStats> operators = driverStats.getOperatorStats();
    for (OperatorStats operator : operators) {
      // TODO: replace with ConcurrentMap.compute() when we migrate to java 8
      OperatorStats updated;
      OperatorStats current;
      do {
        current = operatorSummaries.get(operator.getOperatorId());
        if (current != null) {
          updated = current.add(operator);
        } else {
          updated = operator;
        }
      } while (!compareAndSet(operatorSummaries, operator.getOperatorId(), current, updated));
    }

    rawInputDataSize.update(driverStats.getRawInputDataSize().toBytes());
    rawInputPositions.update(driverStats.getRawInputPositions());

    processedInputDataSize.update(driverStats.getProcessedInputDataSize().toBytes());
    processedInputPositions.update(driverStats.getProcessedInputPositions());

    outputDataSize.update(driverStats.getOutputDataSize().toBytes());
    outputPositions.update(driverStats.getOutputPositions());
  }
示例#6
0
 public void addCompletedDataSize(DataSize addedDataSize) {
   completedBytes.update(addedDataSize.toBytes());
 }
示例#7
0
 public void addCompletedPositions(long positions) {
   completedPositions.update(positions);
 }
示例#8
0
 public void addSplitWallTime(Duration duration) {
   splitWallTime.update(duration.toMillis());
 }
示例#9
0
 public void splitCompleted() {
   completedSplits.update(1);
 }
示例#10
0
 public void splitStarted() {
   startedSplits.update(1);
 }
示例#11
0
 public void addSplits(int count) {
   scheduledSplits.update(count);
 }
示例#12
0
 @Managed
 public long getRunningSplits() {
   return Math.max(0, startedSplits.getTotalCount() - completedSplits.getTotalCount());
 }