-
Notifications
You must be signed in to change notification settings - Fork 240
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add in application timeline to profiling tool #2760
Conversation
build |
Signed-off-by: Robert (Bobby) Evans <bobby@apache.org>
build |
would be nice to have some sort of tests, perhaps unit tests that verify the slots as well as negative tests, what does this do with truncated log files, etc. |
@tgravescs I added in a test and moved away from using SQL to gather the data for the timeline. |
build |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we also need to update the tools/README, right now its just manually updated when we add new options
scheduleCallback: (A, Int) => Unit, | ||
errorOnMissingSlot: Boolean, | ||
slotsFreeUntil: mutable.Buffer[Long]): Unit = { | ||
toSchedule.toSeq.sortWith{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
toSchedule.toSeq.sortWith{ | |
toSchedule.toSeq.sortWith { |
tools/src/main/scala/com/nvidia/spark/rapids/tool/profiling/GenerateTimeline.scala
Outdated
Show resolved
Hide resolved
tools/src/main/scala/com/nvidia/spark/rapids/tool/profiling/GenerateTimeline.scala
Outdated
Show resolved
Hide resolved
// TITLE | ||
// EXEC(s) | TASK TIMING | ||
// STAGES | STAGE TIMING | ||
// STAGE RANGES | STAGE RANGE TIMING |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
perhaps we should clarify what stage range means vs just stages, from just looking at the output graph it was unclear to me until I read the code
build |
@tgravescs I think I have addressed all of your comments. |
This adds in application timeline generation the the profiling tool. It is helpful in understanding what was running and where to know if a stage was long because it was preempted by another stage or if there was skew, etc. This really helped me see the high startup overhead, even if it is not reflected in benchmark numbers because the benchmarks start on the SQL query, not when setting up the data.
I used this to help debug some data/time skew issues.