@@ -436,6 +436,9 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") {
436436
437437 val executorsSet = new HashSet [(String , String )]
438438
439+ var minLaunchTime = Long .MaxValue
440+ var maxFinishTime = Long .MinValue
441+ var numEffectiveTasks = 0
439442 val executorsArrayStr = stageData.taskData.flatMap {
440443 case (_, taskUIData) =>
441444 val taskInfo = taskUIData.taskInfo
@@ -464,6 +467,9 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") {
464467 val launchTime = taskInfo.launchTime
465468 val finishTime = if (! isRunning) taskInfo.finishTime else currentTime
466469 val totalExecutionTime = finishTime - launchTime
470+ minLaunchTime = launchTime.min(minLaunchTime)
471+ maxFinishTime = launchTime.max(maxFinishTime)
472+ numEffectiveTasks += 1
467473
468474 val metricsOpt = taskUIData.taskMetrics
469475 val shuffleReadTime =
@@ -555,6 +561,20 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") {
555561 """ .stripMargin
556562 }.mkString(" [" , " ," , " ]" )
557563
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+
558578 val content =
559579 summary ++
560580 showAdditionalMetrics ++
@@ -570,7 +590,8 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") {
570590 </div >
571591 </div > ++
572592 <script type =" text/javascript" >
573- {Unparsed (s " drawTaskAssignmentTimeline( ${groupArrayStr}, ${executorsArrayStr}) " )}
593+ {Unparsed (s " drawTaskAssignmentTimeline( " +
594+ s " ${groupArrayStr}, ${executorsArrayStr}, ${minLaunchTime}, ${maxZoom}) " )}
574595 </script >
575596
576597 UIUtils .headerSparkPage(" Details for Stage %d" .format(stageId), content, parent)
0 commit comments