-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/33106/
-----------------------------------------------------------

Review request for Aurora and Maxim Khutornenko.


Repository: aurora


Description
-------

This removes the Supplier/memoize behavior in `AttributeAggregate`, performing 
all aggregation up front.


Diffs
-----

  src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java 
ce87344dc18818faa7a1a0298143dcaaaa81fff7 
  src/main/java/org/apache/aurora/scheduler/filter/AttributeAggregate.java 
ed82ae99f23d5a7f1634261205cbe5339fe4cec8 
  src/test/java/org/apache/aurora/scheduler/async/TaskSchedulerImplTest.java 
c5643d9d99fc46d55fd6c48161230139fb7f12b8 
  src/test/java/org/apache/aurora/scheduler/async/TaskSchedulerTest.java 
88c0163170ebc25995d9ef8b1543335a4322bb8e 
  
src/test/java/org/apache/aurora/scheduler/async/preemptor/PendingTaskProcessorTest.java
 bcd1b4e854f5ea227268c73156bc97c7c937c1de 
  
src/test/java/org/apache/aurora/scheduler/async/preemptor/PreemptorImplTest.java
 281f4e02650727aa5d0a35a09dcf0eb823ad1b50 
  
src/test/java/org/apache/aurora/scheduler/async/preemptor/PreemptorModuleTest.java
 7e2d1c54362b33cc3507a4bc3e3ccc02ca29bd6f 
  
src/test/java/org/apache/aurora/scheduler/async/preemptor/PreemptorSlotFinderTest.java
 b80e558f18b817814e4768b13ff94aa816d28543 
  
src/test/java/org/apache/aurora/scheduler/events/NotifyingSchedulingFilterTest.java
 61cea326ababcd6242a3c5a6dcf8d0b3ca7fbdd6 
  src/test/java/org/apache/aurora/scheduler/filter/AttributeAggregateTest.java 
4b565769d79862326efcb31be694f95f333c89c6 
  
src/test/java/org/apache/aurora/scheduler/filter/SchedulingFilterImplTest.java 
d06b89cc319aa7b4479124cbb2cb224cdb662e05 
  src/test/java/org/apache/aurora/scheduler/state/TaskAssignerImplTest.java 
aca0234e037e85202d182affa2c0e988c6cfc854 

Diff: https://reviews.apache.org/r/33106/diff/


Testing
-------

See diff of relevant benchmark sections below (top section is master, bottom is 
with this patch).

As should be expected, performance declines in two scenarios that did not 
'pull' the `Supplier`:
- there are no resource offers
- the task only has value constraints (therefore unaffected by state of the 
rest of the job)

I argue that in practice, these scenarios (no offers, value-only constraints) 
are rare enough to not be worth the code complexity.

```
< SchedulingBenchmarks.ClusterFullUtilizationBenchmark.runBenchmark             
        N/A                   N/A  thrpt   10  593015.942 ± 5782.045  ops/s
< SchedulingBenchmarks.InsufficientResourcesSchedulingBenchmark.runBenchmark    
        N/A                   N/A  thrpt   10   44781.172 ±  306.152  ops/s
< SchedulingBenchmarks.LimitConstraintMismatchSchedulingBenchmark.runBenchmark  
        N/A                   N/A  thrpt   10    3397.620 ±   35.340  ops/s
< SchedulingBenchmarks.PreemptorSlotSearchBenchmark.runBenchmark                
        N/A                   N/A  thrpt   10     240.376 ±    6.679  ops/s
< SchedulingBenchmarks.ValueConstraintMismatchSchedulingBenchmark.runBenchmark  
        N/A                   N/A  thrpt   10   44435.419 ±  291.268  ops/s
---
> SchedulingBenchmarks.ClusterFullUtilizationBenchmark.runBenchmark             
>         N/A                   N/A  thrpt   10  181543.224 ± 2313.677  ops/s
> SchedulingBenchmarks.InsufficientResourcesSchedulingBenchmark.runBenchmark    
>         N/A                   N/A  thrpt   10   35623.691 ±  303.796  ops/s
> SchedulingBenchmarks.LimitConstraintMismatchSchedulingBenchmark.runBenchmark  
>         N/A                   N/A  thrpt   10    3318.727 ±   19.131  ops/s
> SchedulingBenchmarks.PreemptorSlotSearchBenchmark.runBenchmark                
>         N/A                   N/A  thrpt   10     235.248 ±    5.928  ops/s
> SchedulingBenchmarks.ValueConstraintMismatchSchedulingBenchmark.runBenchmark  
>         N/A                   N/A  thrpt   10   35468.747 ±  293.517  ops/s
```


Thanks,

Bill Farner

Reply via email to