Skip to content

Commit 2a99af4

Browse files
committed
Add tracking of analysis time
as a Java bean. This is useful for tracking macro impact of planner features like Quick Stats
1 parent 2a0999a commit 2a99af4

File tree

7 files changed

+26
-1
lines changed

7 files changed

+26
-1
lines changed

presto-main/src/main/java/com/facebook/presto/execution/QueryManagerStats.java

+9
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public class QueryManagerStats
5353
private final CounterStat consumedInputBytes = new CounterStat();
5454
private final CounterStat consumedCpuTimeSecs = new CounterStat();
5555
private final TimeStat executionTime = new TimeStat(MILLISECONDS);
56+
private final TimeStat analysisTime = new TimeStat(MILLISECONDS);
5657
private final TimeStat queuedTime = new TimeStat(MILLISECONDS);
5758
private final DistributionStat wallInputBytesRate = new DistributionStat();
5859
private final DistributionStat cpuInputByteRate = new DistributionStat();
@@ -101,6 +102,7 @@ private void queryFinished(BasicQueryInfo info)
101102
consumedInputBytes.update(info.getQueryStats().getRawInputDataSize().toBytes());
102103
consumedInputRows.update(info.getQueryStats().getRawInputPositions());
103104
executionTime.add(info.getQueryStats().getExecutionTime());
105+
analysisTime.add(info.getQueryStats().getAnalysisTime());
104106
queuedTime.add(info.getQueryStats().getQueuedTime());
105107

106108
long executionWallMillis = info.getQueryStats().getExecutionTime().toMillis();
@@ -273,6 +275,13 @@ public TimeStat getExecutionTime()
273275
return executionTime;
274276
}
275277

278+
@Managed
279+
@Nested
280+
public TimeStat getAnalysisTime()
281+
{
282+
return analysisTime;
283+
}
284+
276285
@Managed
277286
@Nested
278287
public TimeStat getQueuedTime()

presto-main/src/main/java/com/facebook/presto/execution/QueryStateMachine.java

+1
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,7 @@ public BasicQueryInfo getBasicQueryInfo(Optional<BasicStageExecutionStats> rootS
379379
queryStateTimer.getQueuedTime(),
380380
queryStateTimer.getElapsedTime(),
381381
queryStateTimer.getExecutionTime(),
382+
queryStateTimer.getAnalysisTime(),
382383

383384
getCurrentRunningTaskCount(),
384385
getPeakRunningTaskCount(),

presto-main/src/main/java/com/facebook/presto/server/BasicQueryStats.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public class BasicQueryStats
5050
private final Duration queuedTime;
5151
private final Duration elapsedTime;
5252
private final Duration executionTime;
53+
private final Duration analysisTime;
5354

5455
private final int runningTasks;
5556
private final int peakRunningTasks;
@@ -89,6 +90,7 @@ public BasicQueryStats(
8990
@JsonProperty("queuedTime") Duration queuedTime,
9091
@JsonProperty("elapsedTime") Duration elapsedTime,
9192
@JsonProperty("executionTime") Duration executionTime,
93+
@JsonProperty("analysisTime") Duration analysisTime,
9294
@JsonProperty("runningTasks") int runningTasks,
9395
@JsonProperty("peakRunningTasks") int peakRunningTasks,
9496
@JsonProperty("totalDrivers") int totalDrivers,
@@ -119,7 +121,7 @@ public BasicQueryStats(
119121
this.queuedTime = requireNonNull(queuedTime, "queuedTime is null");
120122
this.elapsedTime = requireNonNull(elapsedTime, "elapsedTime is null");
121123
this.executionTime = requireNonNull(executionTime, "executionTime is null");
122-
124+
this.analysisTime = requireNonNull(analysisTime, "analysisTime is null");
123125
this.runningTasks = runningTasks;
124126
this.peakRunningTasks = peakRunningTasks;
125127

@@ -162,6 +164,7 @@ public BasicQueryStats(QueryStats queryStats)
162164
queryStats.getQueuedTime(),
163165
queryStats.getElapsedTime(),
164166
queryStats.getExecutionTime(),
167+
queryStats.getAnalysisTime(),
165168
queryStats.getRunningTasks(),
166169
queryStats.getPeakRunningTasks(),
167170
queryStats.getTotalDrivers(),
@@ -196,6 +199,7 @@ public static BasicQueryStats immediateFailureQueryStats()
196199
new Duration(0, MILLISECONDS),
197200
new Duration(0, MILLISECONDS),
198201
new Duration(0, MILLISECONDS),
202+
new Duration(0, MILLISECONDS),
199203
0,
200204
0,
201205
0,
@@ -414,4 +418,11 @@ public int getRunningTasks()
414418
{
415419
return runningTasks;
416420
}
421+
422+
@ThriftField(29)
423+
@JsonProperty
424+
public Duration getAnalysisTime()
425+
{
426+
return analysisTime;
427+
}
417428
}

presto-main/src/test/java/com/facebook/presto/execution/MockManagedQueryExecution.java

+1
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ public BasicQueryInfo getBasicQueryInfo()
131131
new Duration(3, NANOSECONDS),
132132
new Duration(4, NANOSECONDS),
133133
new Duration(5, NANOSECONDS),
134+
new Duration(1, NANOSECONDS),
134135
5,
135136
5,
136137
6,

presto-main/src/test/java/com/facebook/presto/execution/TestNodeScheduler.java

+1
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ private BasicQueryStats getBasicQueryStats(Duration executionTime)
183183
defaultDuration,
184184
defaultDuration,
185185
executionTime,
186+
defaultDuration,
186187
0,
187188
0,
188189
0,

presto-main/src/test/java/com/facebook/presto/resourcemanager/TestResourceManagerClusterStateProvider.java

+1
Original file line numberDiff line numberDiff line change
@@ -751,6 +751,7 @@ private static BasicQueryInfo createQueryInfo(String queryId, QueryState state,
751751
Duration.valueOf("8m"),
752752
Duration.valueOf("7m"),
753753
Duration.valueOf("34m"),
754+
Duration.valueOf("10m"),
754755
11,
755756
12,
756757
13,

presto-tests/src/test/java/com/facebook/presto/memory/TestClusterMemoryLeakDetector.java

+1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ private static BasicQueryInfo createQueryInfo(String queryId, QueryState state)
8888
Duration.valueOf("8m"),
8989
Duration.valueOf("7m"),
9090
Duration.valueOf("34m"),
91+
Duration.valueOf("10m"),
9192
11,
9293
12,
9394
13,

0 commit comments

Comments
 (0)