This is an automated email from the ASF dual-hosted git repository.
felixybw pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-gluten.git
The following commit(s) were added to refs/heads/main by this push:
new c3fcc4db9f Add page load time metric (#10294)
c3fcc4db9f is described below
commit c3fcc4db9f6f18b952cd4fb9018545947dc0ba21
Author: Rui Mo <[email protected]>
AuthorDate: Thu Oct 23 03:39:45 2025 +0800
Add page load time metric (#10294)
---
backends-velox/src/main/java/org/apache/gluten/metrics/Metrics.java | 4 ++++
.../src/main/java/org/apache/gluten/metrics/OperatorMetrics.java | 3 +++
.../scala/org/apache/gluten/backendsapi/velox/VeloxMetricsApi.scala | 3 +++
.../scala/org/apache/gluten/metrics/BatchScanMetricsUpdater.scala | 1 +
.../org/apache/gluten/metrics/FileSourceScanMetricsUpdater.scala | 2 ++
.../scala/org/apache/gluten/metrics/HiveTableScanMetricsUpdater.scala | 2 ++
.../src/main/scala/org/apache/gluten/metrics/MetricsUtil.scala | 3 +++
cpp/core/jni/JniWrapper.cc | 3 ++-
cpp/core/utils/Metrics.h | 1 +
cpp/velox/compute/WholeStageResultIterator.cc | 2 ++
10 files changed, 23 insertions(+), 1 deletion(-)
diff --git
a/backends-velox/src/main/java/org/apache/gluten/metrics/Metrics.java
b/backends-velox/src/main/java/org/apache/gluten/metrics/Metrics.java
index 5515dd9300..940daf977a 100644
--- a/backends-velox/src/main/java/org/apache/gluten/metrics/Metrics.java
+++ b/backends-velox/src/main/java/org/apache/gluten/metrics/Metrics.java
@@ -52,6 +52,7 @@ public class Metrics implements IMetrics {
public long[] localReadBytes;
public long[] ramReadBytes;
public long[] preloadSplits;
+ public long[] pageLoadTime;
public long[] dataSourceAddSplitTime;
public long[] dataSourceReadTime;
@@ -101,6 +102,7 @@ public class Metrics implements IMetrics {
long[] localReadBytes,
long[] ramReadBytes,
long[] preloadSplits,
+ long[] pageLoadTime,
long[] dataSourceAddSplitTime,
long[] dataSourceReadTime,
long[] physicalWrittenBytes,
@@ -142,6 +144,7 @@ public class Metrics implements IMetrics {
this.localReadBytes = localReadBytes;
this.ramReadBytes = ramReadBytes;
this.preloadSplits = preloadSplits;
+ this.pageLoadTime = pageLoadTime;
this.dataSourceAddSplitTime = dataSourceAddSplitTime;
this.dataSourceReadTime = dataSourceReadTime;
@@ -191,6 +194,7 @@ public class Metrics implements IMetrics {
localReadBytes[index],
ramReadBytes[index],
preloadSplits[index],
+ pageLoadTime[index],
dataSourceAddSplitTime[index],
dataSourceReadTime[index],
physicalWrittenBytes[index],
diff --git
a/backends-velox/src/main/java/org/apache/gluten/metrics/OperatorMetrics.java
b/backends-velox/src/main/java/org/apache/gluten/metrics/OperatorMetrics.java
index 9292caebeb..0f4ab96cbc 100644
---
a/backends-velox/src/main/java/org/apache/gluten/metrics/OperatorMetrics.java
+++
b/backends-velox/src/main/java/org/apache/gluten/metrics/OperatorMetrics.java
@@ -50,6 +50,7 @@ public class OperatorMetrics implements IOperatorMetrics {
public long localReadBytes;
public long ramReadBytes;
public long preloadSplits;
+ public long pageLoadTime;
public long dataSourceAddSplitTime;
public long dataSourceReadTime;
@@ -94,6 +95,7 @@ public class OperatorMetrics implements IOperatorMetrics {
long localReadBytes,
long ramReadBytes,
long preloadSplits,
+ long pageLoadTime,
long dataSourceAddSplitTime,
long dataSourceReadTime,
long physicalWrittenBytes,
@@ -133,6 +135,7 @@ public class OperatorMetrics implements IOperatorMetrics {
this.localReadBytes = localReadBytes;
this.ramReadBytes = ramReadBytes;
this.preloadSplits = preloadSplits;
+ this.pageLoadTime = pageLoadTime;
this.dataSourceAddSplitTime = dataSourceAddSplitTime;
this.dataSourceReadTime = dataSourceReadTime;
this.physicalWrittenBytes = physicalWrittenBytes;
diff --git
a/backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxMetricsApi.scala
b/backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxMetricsApi.scala
index 03579e307b..70597442da 100644
---
a/backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxMetricsApi.scala
+++
b/backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxMetricsApi.scala
@@ -108,6 +108,7 @@ class VeloxMetricsApi extends MetricsApi with Logging {
"skippedSplits" -> SQLMetrics.createMetric(sparkContext, "number of
skipped splits"),
"processedSplits" -> SQLMetrics.createMetric(sparkContext, "number of
processed splits"),
"preloadSplits" -> SQLMetrics.createMetric(sparkContext, "number of
preloaded splits"),
+ "pageLoadTime" -> SQLMetrics.createNanoTimingMetric(sparkContext, "page
load time"),
"dataSourceAddSplitTime" -> SQLMetrics.createNanoTimingMetric(
sparkContext,
"data source add split time"),
@@ -158,6 +159,7 @@ class VeloxMetricsApi extends MetricsApi with Logging {
"skippedSplits" -> SQLMetrics.createMetric(sparkContext, "number of
skipped splits"),
"processedSplits" -> SQLMetrics.createMetric(sparkContext, "number of
processed splits"),
"preloadSplits" -> SQLMetrics.createMetric(sparkContext, "number of
preloaded splits"),
+ "pageLoadTime" -> SQLMetrics.createNanoTimingMetric(sparkContext, "page
load time"),
"dataSourceAddSplitTime" -> SQLMetrics.createNanoTimingMetric(
sparkContext,
"data source add split time"),
@@ -208,6 +210,7 @@ class VeloxMetricsApi extends MetricsApi with Logging {
"skippedSplits" -> SQLMetrics.createMetric(sparkContext, "number of
skipped splits"),
"processedSplits" -> SQLMetrics.createMetric(sparkContext, "number of
processed splits"),
"preloadSplits" -> SQLMetrics.createMetric(sparkContext, "number of
preloaded splits"),
+ "pageLoadTime" -> SQLMetrics.createNanoTimingMetric(sparkContext, "page
load time"),
"dataSourceAddSplitTime" -> SQLMetrics.createNanoTimingMetric(
sparkContext,
"data source add split time"),
diff --git
a/backends-velox/src/main/scala/org/apache/gluten/metrics/BatchScanMetricsUpdater.scala
b/backends-velox/src/main/scala/org/apache/gluten/metrics/BatchScanMetricsUpdater.scala
index 07b5c30107..dc404328fa 100644
---
a/backends-velox/src/main/scala/org/apache/gluten/metrics/BatchScanMetricsUpdater.scala
+++
b/backends-velox/src/main/scala/org/apache/gluten/metrics/BatchScanMetricsUpdater.scala
@@ -54,6 +54,7 @@ class BatchScanMetricsUpdater(val metrics: Map[String,
SQLMetric]) extends Metri
metrics("localReadBytes") += operatorMetrics.localReadBytes
metrics("ramReadBytes") += operatorMetrics.ramReadBytes
metrics("preloadSplits") += operatorMetrics.preloadSplits
+ metrics("pageLoadTime") += operatorMetrics.pageLoadTime
metrics("dataSourceAddSplitTime") +=
operatorMetrics.dataSourceAddSplitTime
metrics("dataSourceReadTime") += operatorMetrics.dataSourceReadTime
metrics("loadLazyVectorTime") += operatorMetrics.loadLazyVectorTime
diff --git
a/backends-velox/src/main/scala/org/apache/gluten/metrics/FileSourceScanMetricsUpdater.scala
b/backends-velox/src/main/scala/org/apache/gluten/metrics/FileSourceScanMetricsUpdater.scala
index 4ba0195802..1e21fcc00e 100644
---
a/backends-velox/src/main/scala/org/apache/gluten/metrics/FileSourceScanMetricsUpdater.scala
+++
b/backends-velox/src/main/scala/org/apache/gluten/metrics/FileSourceScanMetricsUpdater.scala
@@ -42,6 +42,7 @@ class FileSourceScanMetricsUpdater(@transient val metrics:
Map[String, SQLMetric
val skippedSplits: SQLMetric = metrics("skippedSplits")
val processedSplits: SQLMetric = metrics("processedSplits")
val preloadSplits: SQLMetric = metrics("preloadSplits")
+ val pageLoadTime: SQLMetric = metrics("pageLoadTime")
val dataSourceAddSplitTime: SQLMetric = metrics("dataSourceAddSplitTime")
val dataSourceReadTime: SQLMetric = metrics("dataSourceReadTime")
val skippedStrides: SQLMetric = metrics("skippedStrides")
@@ -83,6 +84,7 @@ class FileSourceScanMetricsUpdater(@transient val metrics:
Map[String, SQLMetric
localReadBytes += operatorMetrics.localReadBytes
ramReadBytes += operatorMetrics.ramReadBytes
preloadSplits += operatorMetrics.preloadSplits
+ pageLoadTime += operatorMetrics.pageLoadTime
dataSourceAddSplitTime += operatorMetrics.dataSourceAddSplitTime
dataSourceReadTime += operatorMetrics.dataSourceReadTime
loadLazyVectorTime += operatorMetrics.loadLazyVectorTime
diff --git
a/backends-velox/src/main/scala/org/apache/gluten/metrics/HiveTableScanMetricsUpdater.scala
b/backends-velox/src/main/scala/org/apache/gluten/metrics/HiveTableScanMetricsUpdater.scala
index c061540ab6..a8732b709a 100644
---
a/backends-velox/src/main/scala/org/apache/gluten/metrics/HiveTableScanMetricsUpdater.scala
+++
b/backends-velox/src/main/scala/org/apache/gluten/metrics/HiveTableScanMetricsUpdater.scala
@@ -37,6 +37,7 @@ class HiveTableScanMetricsUpdater(@transient val metrics:
Map[String, SQLMetric]
val skippedSplits: SQLMetric = metrics("skippedSplits")
val processedSplits: SQLMetric = metrics("processedSplits")
val preloadSplits: SQLMetric = metrics("preloadSplits")
+ val pageLoadTime: SQLMetric = metrics("pageLoadTime")
val dataSourceAddSplitTime: SQLMetric = metrics("dataSourceAddSplitTime")
val dataSourceReadTime: SQLMetric = metrics("dataSourceReadTime")
val skippedStrides: SQLMetric = metrics("skippedStrides")
@@ -78,6 +79,7 @@ class HiveTableScanMetricsUpdater(@transient val metrics:
Map[String, SQLMetric]
localReadBytes += operatorMetrics.localReadBytes
ramReadBytes += operatorMetrics.ramReadBytes
preloadSplits += operatorMetrics.preloadSplits
+ pageLoadTime += operatorMetrics.pageLoadTime
dataSourceAddSplitTime += operatorMetrics.dataSourceAddSplitTime
dataSourceReadTime += operatorMetrics.dataSourceReadTime
loadLazyVectorTime += operatorMetrics.loadLazyVectorTime
diff --git
a/backends-velox/src/main/scala/org/apache/gluten/metrics/MetricsUtil.scala
b/backends-velox/src/main/scala/org/apache/gluten/metrics/MetricsUtil.scala
index 3fd44456b1..0624fd1f2d 100644
--- a/backends-velox/src/main/scala/org/apache/gluten/metrics/MetricsUtil.scala
+++ b/backends-velox/src/main/scala/org/apache/gluten/metrics/MetricsUtil.scala
@@ -133,6 +133,7 @@ object MetricsUtil extends Logging {
var localReadBytes: Long = 0
var ramReadBytes: Long = 0
var preloadSplits: Long = 0
+ var pageLoadTime: Long = 0
var dataSourceAddSplitTime: Long = 0
var dataSourceReadTime: Long = 0
var numWrittenFiles: Long = 0
@@ -166,6 +167,7 @@ object MetricsUtil extends Logging {
localReadBytes += metrics.localReadBytes
ramReadBytes += metrics.ramReadBytes
preloadSplits += metrics.preloadSplits
+ pageLoadTime += metrics.pageLoadTime
dataSourceAddSplitTime += metrics.dataSourceAddSplitTime
dataSourceReadTime += metrics.dataSourceReadTime
numWrittenFiles += metrics.numWrittenFiles
@@ -206,6 +208,7 @@ object MetricsUtil extends Logging {
localReadBytes,
ramReadBytes,
preloadSplits,
+ pageLoadTime,
dataSourceAddSplitTime,
dataSourceReadTime,
physicalWrittenBytes,
diff --git a/cpp/core/jni/JniWrapper.cc b/cpp/core/jni/JniWrapper.cc
index fe69708192..0420f5a6c3 100644
--- a/cpp/core/jni/JniWrapper.cc
+++ b/cpp/core/jni/JniWrapper.cc
@@ -259,7 +259,7 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) {
env,
metricsBuilderClass,
"<init>",
-
"([J[J[J[J[J[J[J[J[J[JJ[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[JLjava/lang/String;)V");
+
"([J[J[J[J[J[J[J[J[J[JJ[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[J[JLjava/lang/String;)V");
nativeColumnarToRowInfoClass =
createGlobalClassReferenceOrError(env,
"Lorg/apache/gluten/vectorized/NativeColumnarToRowInfo;");
@@ -585,6 +585,7 @@ JNIEXPORT jobject JNICALL
Java_org_apache_gluten_metrics_IteratorMetricsJniWrapp
longArray[Metrics::kLocalReadBytes],
longArray[Metrics::kRamReadBytes],
longArray[Metrics::kPreloadSplits],
+ longArray[Metrics::kPageLoadTime],
longArray[Metrics::kDataSourceAddSplitWallNanos],
longArray[Metrics::kDataSourceReadWallNanos],
longArray[Metrics::kPhysicalWrittenBytes],
diff --git a/cpp/core/utils/Metrics.h b/cpp/core/utils/Metrics.h
index 01d25182cd..c271a28a4f 100644
--- a/cpp/core/utils/Metrics.h
+++ b/cpp/core/utils/Metrics.h
@@ -80,6 +80,7 @@ struct Metrics {
kLocalReadBytes,
kRamReadBytes,
kPreloadSplits,
+ kPageLoadTime,
kDataSourceAddSplitWallNanos,
kDataSourceReadWallNanos,
diff --git a/cpp/velox/compute/WholeStageResultIterator.cc
b/cpp/velox/compute/WholeStageResultIterator.cc
index 4aacc43b7f..a0b5b97850 100644
--- a/cpp/velox/compute/WholeStageResultIterator.cc
+++ b/cpp/velox/compute/WholeStageResultIterator.cc
@@ -52,6 +52,7 @@ const std::string kStorageReadBytes = "storageReadBytes";
const std::string kLocalReadBytes = "localReadBytes";
const std::string kRamReadBytes = "ramReadBytes";
const std::string kPreloadSplits = "readyPreloadedSplits";
+const std::string kPageLoadTime = "pageLoadTimeNs";
const std::string kDataSourceAddSplitWallNanos = "dataSourceAddSplitWallNanos";
const std::string kDataSourceReadWallNanos = "dataSourceReadWallNanos";
const std::string kNumWrittenFiles = "numWrittenFiles";
@@ -496,6 +497,7 @@ void WholeStageResultIterator::collectMetrics() {
metrics_->get(Metrics::kRamReadBytes)[metricIndex] =
runtimeMetric("sum", second->customStats, kRamReadBytes);
metrics_->get(Metrics::kPreloadSplits)[metricIndex] =
runtimeMetric("sum", entry.second->customStats, kPreloadSplits);
+ metrics_->get(Metrics::kPageLoadTime)[metricIndex] =
runtimeMetric("sum", second->customStats, kPageLoadTime);
metrics_->get(Metrics::kDataSourceAddSplitWallNanos)[metricIndex] =
runtimeMetric("sum", second->customStats,
kDataSourceAddSplitWallNanos);
metrics_->get(Metrics::kDataSourceReadWallNanos)[metricIndex] =
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]