Skip to content

Commit

Permalink
[KYUUBI #6108] Display the CPU time consumed by the statement in the …
Browse files Browse the repository at this point in the history
…Spark Engine tab

# 🔍 Description
## Issue References 🔗

This pull request fixes #6108

## Describe Your Solution 🔧

Follow #6112

Display the run time and CPU time of statements or sessions in the Spark UI.

<img width="1429" alt="screenshot 2024-03-05 10 37 26" src="https://github.com/apache/kyuubi/assets/23011702/337772e0-a681-4989-b6f9-ee3633bb6287">

## Types of changes 🔖

- [ ] Bugfix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)

## Test Plan 🧪

#### Behavior Without This Pull Request ⚰️

#### Behavior With This Pull Request 🎉

#### Related Unit Tests

---

# Checklist 📝

- [x] This patch was not authored or co-authored using [Generative Tooling](https://www.apache.org/legal/generative-tooling.html)

**Be nice. Be informative.**

Closes #6113 from XorSum/features/spark-engine-cpu-time-UI.

Closes #6108

aad2bbb [bkhan] session immediately
8e957c7 [bkhan] display run time
9018a07 [bkhan] Apply suggestions from code review
8523364 [bkhan] Display the CPU time consumed by the statement in the Engine tab

Authored-by: bkhan <[email protected]>
Signed-off-by: Shaoyun Chen <[email protected]>
  • Loading branch information
XorSum authored and cxzl25 committed Mar 5, 2024
1 parent e0d706e commit 49456bb
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,9 @@ abstract class SparkOperation(session: Session)
info(s"statementId=${statementId}, " +
s"operationRunTime=${formatDuration(l.getOperationRunTime)}, " +
s"operationCpuTime=${formatDuration(l.getOperationCpuTime / 1000000)}")
session.asInstanceOf[SparkSessionImpl].increaseRunTime(l.getOperationRunTime)
session.asInstanceOf[SparkSessionImpl].increaseCpuTime(l.getOperationCpuTime)
session.asInstanceOf[SparkSessionImpl].increaseRunAndCpuTime(
l.getOperationRunTime,
l.getOperationCpuTime)
})
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,11 +129,8 @@ class SparkSessionImpl(
handle)
}

def increaseRunTime(time: Long): Unit = {
sessionRunTime.getAndAdd(time)
}

def increaseCpuTime(time: Long): Unit = {
sessionCpuTime.getAndAdd(time)
def increaseRunAndCpuTime(runTime: Long, cpuTime: Long): Unit = {
sessionEvent.sessionRunTime = sessionRunTime.addAndGet(runTime)
sessionEvent.sessionCpuTime = sessionCpuTime.addAndGet(cpuTime)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,8 @@ case class EnginePage(parent: EngineTab) extends WebUIPage("") {
("Start Time", true, None),
("Finish Time", true, None),
("Duration", true, None),
("Run Time", true, None),
("CPU Time", true, None),
("Total Statements", true, None))

headerStatRow(
Expand All @@ -428,6 +430,8 @@ case class EnginePage(parent: EngineTab) extends WebUIPage("") {
<td> {formatDate(session.startTime)} </td>
<td> {if (session.endTime > 0) formatDate(session.endTime)} </td>
<td> {formatDuration(session.duration)} </td>
<td> {formatDuration(session.sessionRunTime)} </td>
<td> {formatDuration(session.sessionCpuTime / 1000000)} </td>
<td> {session.totalOperations} </td>
</tr>
}
Expand Down Expand Up @@ -484,6 +488,8 @@ private class StatementStatsPagedTable(
("Create Time", true, None),
("Finish Time", true, None),
("Duration", true, None),
("Run Time", true, None),
("CPU Time", true, None),
("Statement", true, None),
("State", true, None),
("Query Details", true, None),
Expand Down Expand Up @@ -523,6 +529,8 @@ private class StatementStatsPagedTable(
<td >
{formatDuration(event.duration)}
</td>
<td> {formatDuration(event.operationRunTime.getOrElse(0L))} </td>
<td> {formatDuration(event.operationCpuTime.getOrElse(0L) / 1000000)} </td>
<td>
<span class="description-input">
{event.statement}
Expand Down Expand Up @@ -592,6 +600,8 @@ private class SessionStatsTableDataSource(
case "Start Time" => Ordering.by(_.startTime)
case "Finish Time" => Ordering.by(_.endTime)
case "Duration" => Ordering.by(_.duration)
case "Run Time" => Ordering.by(_.sessionRunTime)
case "CPU Time" => Ordering.by(_.sessionCpuTime)
case "Total Statements" => Ordering.by(_.totalOperations)
case unknownColumn => throw new IllegalArgumentException(s"Unknown column: $unknownColumn")
}
Expand Down Expand Up @@ -627,6 +637,8 @@ private class StatementStatsTableDataSource(
case "Create Time" => Ordering.by(_.createTime)
case "Finish Time" => Ordering.by(_.completeTime)
case "Duration" => Ordering.by(_.duration)
case "Run Time" => Ordering.by(_.operationRunTime.getOrElse(0L))
case "CPU Time" => Ordering.by(_.operationCpuTime.getOrElse(0L))
case "Statement" => Ordering.by(_.statement)
case "State" => Ordering.by(_.state)
case "Query Details" => Ordering.by(_.executionId)
Expand Down

0 comments on commit 49456bb

Please sign in to comment.