From 2231eb32ddfb6b3f28c11450640e2400f32ed147 Mon Sep 17 00:00:00 2001 From: David Phillips Date: Sat, 1 Apr 2023 11:35:22 -0700 Subject: [PATCH 1/3] Remove unused field from PrioritizedSplitRunner --- .../io/trino/execution/executor/PrioritizedSplitRunner.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java b/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java index 5b98af62e0a3..695d82af95c4 100644 --- a/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java +++ b/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java @@ -58,7 +58,6 @@ public class PrioritizedSplitRunner protected final AtomicReference priority = new AtomicReference<>(new Priority(0, 0)); - protected final AtomicLong lastRun = new AtomicLong(); private final AtomicLong lastReady = new AtomicLong(); private final AtomicLong start = new AtomicLong(); @@ -170,7 +169,6 @@ public ListenableFuture process() scheduledNanos.addAndGet(quantaScheduledNanos); priority.set(taskHandle.addScheduledNanos(quantaScheduledNanos)); - lastRun.set(endNanos); if (blocked == NOT_BLOCKED) { unblockedQuantaWallTime.add(elapsed.getWall()); From f90c0e258ab8b31c7eb4ef14a78322203f63172b Mon Sep 17 00:00:00 2001 From: David Phillips Date: Sat, 1 Apr 2023 11:36:07 -0700 Subject: [PATCH 2/3] Make PrioritizedSplitRunner final --- .../io/trino/execution/executor/PrioritizedSplitRunner.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java b/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java index 695d82af95c4..329c0f079176 100644 --- a/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java +++ b/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java @@ -33,7 +33,7 @@ import static java.util.Objects.requireNonNull; import static java.util.concurrent.TimeUnit.NANOSECONDS; -public class PrioritizedSplitRunner +public final class PrioritizedSplitRunner implements Comparable { private static final AtomicLong NEXT_WORKER_ID = new AtomicLong(); @@ -56,7 +56,7 @@ public class PrioritizedSplitRunner private final AtomicBoolean destroyed = new AtomicBoolean(); - protected final AtomicReference priority = new AtomicReference<>(new Priority(0, 0)); + private final AtomicReference priority = new AtomicReference<>(new Priority(0, 0)); private final AtomicLong lastReady = new AtomicLong(); private final AtomicLong start = new AtomicLong(); @@ -91,7 +91,7 @@ public class PrioritizedSplitRunner this.blockedQuantaWallTime = requireNonNull(blockedQuantaWallTime, "blockedQuantaWallTime is null"); this.unblockedQuantaWallTime = requireNonNull(unblockedQuantaWallTime, "unblockedQuantaWallTime is null"); - this.updateLevelPriority(); + updateLevelPriority(); } public TaskHandle getTaskHandle() From 086c667627751c2543719ddf6fd8fbfc281a6eb8 Mon Sep 17 00:00:00 2001 From: David Phillips Date: Sat, 1 Apr 2023 11:41:48 -0700 Subject: [PATCH 3/3] Use CpuDuration wall time in PrioritizedSplitRunner --- .../io/trino/execution/executor/PrioritizedSplitRunner.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java b/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java index 329c0f079176..6d4fb2c76c28 100644 --- a/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java +++ b/core/trino-main/src/main/java/io/trino/execution/executor/PrioritizedSplitRunner.java @@ -164,8 +164,7 @@ public ListenableFuture process() ListenableFuture blocked = split.processFor(SPLIT_RUN_QUANTA); CpuTimer.CpuDuration elapsed = timer.elapsedTime(); - long endNanos = ticker.read(); - long quantaScheduledNanos = endNanos - startNanos; + long quantaScheduledNanos = elapsed.getWall().roundTo(NANOSECONDS); scheduledNanos.addAndGet(quantaScheduledNanos); priority.set(taskHandle.addScheduledNanos(quantaScheduledNanos));