generation capacity: 0.80 rollouts per time unit -> one batch of 32 every 40.0 time units

generation-bound (update takes 12)
protocol             updates/1000  mean stale   p95  discarded  worker util  learner util  max queue
sync                        14.21        0.00     0      0.000        0.571         0.170          0
async                       24.88        0.54     1      0.000        1.000         0.299         32
async, cap s=2              24.88        0.54     1      0.001        1.000         0.299         32
async, queue<=64            24.88        0.54     1      0.000        1.000         0.299         32
async, queue<=40            24.88        0.54     1      0.000        1.000         0.299         32

learner-bound (update takes 60)
protocol             updates/1000  mean stale   p95  discarded  worker util  learner util  max queue
sync                         8.47        0.00     0      0.000        0.339         0.507          0
async                       16.60       55.96   105      0.000        1.000         0.996       5292
async, cap s=2              16.60        1.34     2      0.658        1.000         0.996       5292
async, queue<=64            16.60        2.21     3      0.000        0.673         0.996         71
async, queue<=40            16.60        1.46     2      0.000        0.672         0.996         47
