Measurements
Prefixes:
- mili: $m$, 0.001,3,
 - micro: $\mu$, 0.000 001, 6,
 - nano: $n$, 9,
 - pico: $p$, 12,
 - femto: $f$, 15,
 - atto: $a$, 18,
 - zepto: $z$, 21,
 - yocto: $y$, 24
 
Speedup
- Amdahl’s law: SpeedUp= $\frac{1}{1-p+p/s}$. Constant problem size.
 - Gustafson’s law: SpeedUp=$1-p+sp$. Constant computing power.
 
Tuning
- scale out
 - scale up: memory, disk, CPU, network … an easy but last resort
 - code:
- look for large loops
 - avoid exception catching
 - avoid polymorphism
 - avoid virtual function
 - go low level if needed
 
 - size of chunks: make the size smaller for liquidity, but not too much for latency issues.
 - storage format: syntax VS binary format
 - network usage: 
- keep shuffling to a minimum
 - push down projection and selection as close as possible to the source.
 
 - architecture
 
Tail latency
Causes
sharing resources, queues, garbage collection, energy management…
Improvements
- keep the low-level queues short
 - break splits and queries further down
 - manage background activities
 - latency-induced probation: we shut down a machine that is too slow.
 - completely drop the last 0.01% that takes too long…
 - other measures
Hedge requests
basic idea: duplicate 
task duplicates, first done wins.
Deferred hedge request
when 95% percentile reached, launch duplicate tasks.
Tied request
basic idea cancel request. A task is duplicated and waiting in several queues. Cancel other requests when one of them starts.