-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/31739/
-----------------------------------------------------------
(Updated March 4, 2015, 7:30 p.m.)
Review request for Aurora, Bill Farner and Zameer Manji.
Bugs: AURORA-1158
https://issues.apache.org/jira/browse/AURORA-1158
Repository: aurora
Description (updated)
-------
Reservations now happen asynchronously with a configurable delay between a
failed task scheduling and a preemption attempt.
Added a new `PreemptorBenchmark` to measure preemption perf as it now happens
off the main scheduling loop and thus unreachable by earlier benchmarks.
Benchmark results are unsurprisingly great. The biggest winner is the
PreemptorFallbackForLargeClusterBenchmark (now
ClusterFullUtilizationBenchmark). Without the preemptor fallback and thanks to
static veto offer filtering it's now 99.995% faster :)
The lowest gain is for the limit constraint benchmark. It's the only dynamic
veto type and thus is not subjected to offer filtering. Still ~71% improvement
is nothing to complain about.
Before:
Benchmark
Mode Cnt Score Error Units
SchedulingBenchmarks.InsufficientResourcesSchedulingBenchmark.runBenchmark
avgt 100 781243.004 ± 9308.450 ns/op
SchedulingBenchmarks.LimitConstraintMismatchSchedulingBenchmark.runBenchmark
avgt 100 1205278.826 ± 19800.452 ns/op
SchedulingBenchmarks.PreemptorFallbackForLargeClusterBenchmark.runBenchmark
avgt 100 77048458.974 ± 918593.702 ns/op
SchedulingBenchmarks.ValueConstraintMismatchSchedulingBenchmark.runBenchmark
avgt 100 769919.326 ± 18963.264 ns/op
After:
Benchmark
Mode Cnt Score Error Units
SchedulingBenchmarks.InsufficientResourcesSchedulingBenchmark.runBenchmark
avgt 100 28117.603 ± 243.556 ns/op
SchedulingBenchmarks.LimitConstraintMismatchSchedulingBenchmark.runBenchmark
avgt 100 348667.808 ± 2956.521 ns/op
SchedulingBenchmarks.ClusterFullUtilizationBenchmark.runBenchmark
avgt 100 3978.828 ± 351.186 ns/op
SchedulingBenchmarks.ValueConstraintMismatchSchedulingBenchmark.runBenchmark
avgt 100 26096.782 ± 412.138 ns/op
SchedulingBenchmarks.PreemptorBenchmark.runBenchmark
avgt 100 6054216.773 ± 105428.318 ns/op
Perf gain summary:
InsufficientResourcesSchedulingBenchmark - 96.4%
LimitConstraintMismatchSchedulingBenchmark - 71%
PreemptorFallbackForLargeClusterBenchmark - 99.995%
ValueConstraintMismatchSchedulingBenchmark - 96.6%
Diffs
-----
src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java
3239eaa139e35e8c3acdacf6375f492de2b5bfee
src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java
e87dda47a355654c66f6f54fb25a4d9a7f68422d
src/main/java/org/apache/aurora/scheduler/async/TaskScheduler.java
d0fe3e133cbec2418f31160bf8ab8adaa45bb958
src/test/java/org/apache/aurora/scheduler/async/TaskSchedulerImplTest.java
4ee13c8e5d46ba863f4d9871884c7d494d07758d
src/test/java/org/apache/aurora/scheduler/async/TaskSchedulerTest.java
87bc531d2a72f21c36ddd0c1bd3b2367826cc422
Diff: https://reviews.apache.org/r/31739/diff/
Testing
-------
./gradlew -Pq build
Manual testing in vagrant.
Thanks,
Maxim Khutornenko