@@ -436,6 +436,9 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") {
436
436
437
437
val executorsSet = new HashSet [(String , String )]
438
438
439
+ var minLaunchTime = Long .MaxValue
440
+ var maxFinishTime = Long .MinValue
441
+ var numEffectiveTasks = 0
439
442
val executorsArrayStr = stageData.taskData.flatMap {
440
443
case (_, taskUIData) =>
441
444
val taskInfo = taskUIData.taskInfo
@@ -464,6 +467,9 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") {
464
467
val launchTime = taskInfo.launchTime
465
468
val finishTime = if (! isRunning) taskInfo.finishTime else currentTime
466
469
val totalExecutionTime = finishTime - launchTime
470
+ minLaunchTime = launchTime.min(minLaunchTime)
471
+ maxFinishTime = launchTime.max(maxFinishTime)
472
+ numEffectiveTasks += 1
467
473
468
474
val metricsOpt = taskUIData.taskMetrics
469
475
val shuffleReadTime =
@@ -555,6 +561,20 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") {
555
561
""" .stripMargin
556
562
}.mkString(" [" , " ," , " ]" )
557
563
564
+ var maxWindowInSec = ((maxFinishTime - minLaunchTime) / 1000.0 ).round
565
+ if (maxWindowInSec <= 0 ) maxWindowInSec = 1
566
+ val tasksPerSecond = numEffectiveTasks / maxWindowInSec
567
+ var maxZoom = {
568
+ if (tasksPerSecond > 100 ) {
569
+ 1000L / (tasksPerSecond / 100 )
570
+ }
571
+ else {
572
+ 24L * 60 * 60 * 1000
573
+ }
574
+ }
575
+
576
+ if (maxZoom < 0 ) maxZoom = 1
577
+
558
578
val content =
559
579
summary ++
560
580
showAdditionalMetrics ++
@@ -570,7 +590,8 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") {
570
590
</div >
571
591
</div > ++
572
592
<script type =" text/javascript" >
573
- {Unparsed (s " drawTaskAssignmentTimeline( ${groupArrayStr}, ${executorsArrayStr}) " )}
593
+ {Unparsed (s " drawTaskAssignmentTimeline( " +
594
+ s " ${groupArrayStr}, ${executorsArrayStr}, ${minLaunchTime}, ${maxZoom}) " )}
574
595
</script >
575
596
576
597
UIUtils .headerSparkPage(" Details for Stage %d" .format(stageId), content, parent)
0 commit comments