-
- Downloads
[SPARK-17637][SCHEDULER] Packed scheduling for Spark tasks across executors
## What changes were proposed in this pull request? Restructure the code and implement two new task assigner. PackedAssigner: try to allocate tasks to the executors with least available cores, so that spark can release reserved executors when dynamic allocation is enabled. BalancedAssigner: try to allocate tasks to the executors with more available cores in order to balance the workload across all executors. By default, the original round robin assigner is used. We test a pipeline, and new PackedAssigner save around 45% regarding the reserved cpu and memory with dynamic allocation enabled. ## How was this patch tested? (Please explain how this patch was tested. E.g. unit tests, integration tests, manual tests) Both unit test in TaskSchedulerImplSuite and manual tests in production pipeline. Author: Zhan Zhang <zhanzhang@fb.com> Closes #15218 from zhzhan/packed-scheduler.
Showing
- core/src/main/scala/org/apache/spark/scheduler/TaskAssigner.scala 154 additions, 0 deletions.../main/scala/org/apache/spark/scheduler/TaskAssigner.scala
- core/src/main/scala/org/apache/spark/scheduler/TaskSchedulerImpl.scala 34 additions, 19 deletions.../scala/org/apache/spark/scheduler/TaskSchedulerImpl.scala
- core/src/test/scala/org/apache/spark/scheduler/TaskSchedulerImplSuite.scala 67 additions, 0 deletions...a/org/apache/spark/scheduler/TaskSchedulerImplSuite.scala
- docs/configuration.md 11 additions, 0 deletionsdocs/configuration.md
Please register or sign in to comment