Class TimeSharingTaskExecutor

java.lang.Object
io.trino.execution.executor.timesharing.TimeSharingTaskExecutor
All Implemented Interfaces:
TaskExecutor

@ThreadSafe public class TimeSharingTaskExecutor extends Object implements TaskExecutor
  • Constructor Details

    • TimeSharingTaskExecutor

      @Inject public TimeSharingTaskExecutor(TaskManagerConfig config, VersionEmbedder versionEmbedder, io.opentelemetry.api.trace.Tracer tracer, MultilevelSplitQueue splitQueue)
    • TimeSharingTaskExecutor

      public TimeSharingTaskExecutor(int runnerThreads, int minDrivers, int guaranteedNumberOfDriversPerTask, int maximumNumberOfDriversPerTask, com.google.common.base.Ticker ticker)
    • TimeSharingTaskExecutor

      public TimeSharingTaskExecutor(int runnerThreads, int minDrivers, int guaranteedNumberOfDriversPerTask, int maximumNumberOfDriversPerTask, MultilevelSplitQueue splitQueue, com.google.common.base.Ticker ticker)
    • TimeSharingTaskExecutor

      public TimeSharingTaskExecutor(int runnerThreads, int minDrivers, int guaranteedNumberOfDriversPerTask, int maximumNumberOfDriversPerTask, io.airlift.units.Duration stuckSplitsWarningThreshold, VersionEmbedder versionEmbedder, io.opentelemetry.api.trace.Tracer tracer, MultilevelSplitQueue splitQueue, com.google.common.base.Ticker ticker)
  • Method Details

    • start

      @PostConstruct public void start()
      Specified by:
      start in interface TaskExecutor
    • stop

      @PreDestroy public void stop()
      Specified by:
      stop in interface TaskExecutor
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • addTask

      public TimeSharingTaskHandle addTask(TaskId taskId, DoubleSupplier utilizationSupplier, int initialSplitConcurrency, io.airlift.units.Duration splitConcurrencyAdjustFrequency, OptionalInt maxDriversPerTask)
      Specified by:
      addTask in interface TaskExecutor
    • removeTask

      public void removeTask(TaskHandle taskHandle)
      Specified by:
      removeTask in interface TaskExecutor
    • enqueueSplits

      public List<com.google.common.util.concurrent.ListenableFuture<Void>> enqueueSplits(TaskHandle taskHandle, boolean intermediate, List<? extends SplitRunner> taskSplits)
      Specified by:
      enqueueSplits in interface TaskExecutor
    • getTasks

      public int getTasks()
    • getRunnerThreads

      public int getRunnerThreads()
    • getMinimumNumberOfDrivers

      public int getMinimumNumberOfDrivers()
    • getTotalSplits

      public int getTotalSplits()
    • getIntermediateSplits

      public int getIntermediateSplits()
    • getWaitingSplits

      public int getWaitingSplits()
    • getLeafSplitsSize

      public io.airlift.stats.DistributionStat getLeafSplitsSize()
    • getCurrentLeafSplitsSize

      public int getCurrentLeafSplitsSize()
    • getRunningSplits

      public int getRunningSplits()
    • getBlockedSplits

      public int getBlockedSplits()
    • getCompletedTasksLevel0

      public long getCompletedTasksLevel0()
    • getCompletedTasksLevel1

      public long getCompletedTasksLevel1()
    • getCompletedTasksLevel2

      public long getCompletedTasksLevel2()
    • getCompletedTasksLevel3

      public long getCompletedTasksLevel3()
    • getCompletedTasksLevel4

      public long getCompletedTasksLevel4()
    • getCompletedSplitsLevel0

      public long getCompletedSplitsLevel0()
    • getCompletedSplitsLevel1

      public long getCompletedSplitsLevel1()
    • getCompletedSplitsLevel2

      public long getCompletedSplitsLevel2()
    • getCompletedSplitsLevel3

      public long getCompletedSplitsLevel3()
    • getCompletedSplitsLevel4

      public long getCompletedSplitsLevel4()
    • getRunningTasksLevel0

      public long getRunningTasksLevel0()
    • getRunningTasksLevel1

      public long getRunningTasksLevel1()
    • getRunningTasksLevel2

      public long getRunningTasksLevel2()
    • getRunningTasksLevel3

      public long getRunningTasksLevel3()
    • getRunningTasksLevel4

      public long getRunningTasksLevel4()
    • getSplitQueuedTime

      public io.airlift.stats.TimeStat getSplitQueuedTime()
    • getSplitWallTime

      public io.airlift.stats.TimeStat getSplitWallTime()
    • getBlockedQuantaWallTime

      public io.airlift.stats.TimeStat getBlockedQuantaWallTime()
    • getUnblockedQuantaWallTime

      public io.airlift.stats.TimeStat getUnblockedQuantaWallTime()
    • getLeafSplitScheduledTime

      public io.airlift.stats.TimeDistribution getLeafSplitScheduledTime()
    • getIntermediateSplitScheduledTime

      public io.airlift.stats.TimeDistribution getIntermediateSplitScheduledTime()
    • getLeafSplitWallTime

      public io.airlift.stats.TimeDistribution getLeafSplitWallTime()
    • getIntermediateSplitWallTime

      public io.airlift.stats.TimeDistribution getIntermediateSplitWallTime()
    • getLeafSplitWaitTime

      public io.airlift.stats.TimeDistribution getLeafSplitWaitTime()
    • getIntermediateSplitWaitTime

      public io.airlift.stats.TimeDistribution getIntermediateSplitWaitTime()
    • getLeafSplitCpuTime

      public io.airlift.stats.TimeDistribution getLeafSplitCpuTime()
    • getIntermediateSplitCpuTime

      public io.airlift.stats.TimeDistribution getIntermediateSplitCpuTime()
    • getGlobalScheduledTimeMicros

      public io.airlift.stats.CounterStat getGlobalScheduledTimeMicros()
    • getGlobalCpuTimeMicros

      public io.airlift.stats.CounterStat getGlobalCpuTimeMicros()
    • getMaxActiveSplitsInfo

      public String getMaxActiveSplitsInfo()
    • getRunAwaySplitCount

      public long getRunAwaySplitCount()
    • getStuckSplitTaskIds

      public Set<TaskId> getStuckSplitTaskIds(io.airlift.units.Duration processingDurationThreshold, Predicate<RunningSplitInfo> filter)
      Specified by:
      getStuckSplitTaskIds in interface TaskExecutor
    • getProcessorExecutor

      public io.airlift.concurrent.ThreadPoolExecutorMBean getProcessorExecutor()