Mature optimization (Carlos Bueno, Facebook)

23
Mature Optimization Carlos Bueno <[email protected]>

description

HighLoad++ 2013

Transcript of Mature optimization (Carlos Bueno, Facebook)

Page 1: Mature optimization (Carlos Bueno, Facebook)

Mature Optimization

Carlos Bueno <[email protected]>

Page 2: Mature optimization (Carlos Bueno, Facebook)

FACT: You are not clairvoyant.

Page 3: Mature optimization (Carlos Bueno, Facebook)
Page 4: Mature optimization (Carlos Bueno, Facebook)

Who cares?

Very obvious!

Page 5: Mature optimization (Carlos Bueno, Facebook)
Page 6: Mature optimization (Carlos Bueno, Facebook)

The Plan 1: Measure Carefully. 2: ???? 3: Profit!

Page 7: Mature optimization (Carlos Bueno, Facebook)

The Plan (revised) 0: Define the Problem. 1: Measure Carefully. 2: ???? 3: Profit!

Page 8: Mature optimization (Carlos Bueno, Facebook)

Define the Problem. “WidgetFactoryServer is too slow!”

Page 9: Mature optimization (Carlos Bueno, Facebook)

Define the Problem. “WidgetFactoryServer is too slow!” Problem definitions must be specific enough to suggest a way forward, and testable. You need a falsifiable statement.

Page 10: Mature optimization (Carlos Bueno, Facebook)

Define the Problem. •  WidgetFactoryServer is CPU-bound

•  Run a profiler

•  Optimize the slow functions

•  CPU time should decrease

Page 11: Mature optimization (Carlos Bueno, Facebook)

FACT: People have a lot of advice about writing fast programs. Most of it is horseshit.

Page 12: Mature optimization (Carlos Bueno, Facebook)

HipHop Virtual Machine (HHVM)

C++

JIT

CPU Time

Page 13: Mature optimization (Carlos Bueno, Facebook)

The Plan 0: Define the Problem. 1: Measure Carefully. 2: ???? 3: Profit!

Page 14: Mature optimization (Carlos Bueno, Facebook)

Measure continuously.

Page 15: Mature optimization (Carlos Bueno, Facebook)

Daily & Weekly Cycles

Page 16: Mature optimization (Carlos Bueno, Facebook)

Collect RAW data, not metrics.

Page 17: Mature optimization (Carlos Bueno, Facebook)

Record lots of metadata.

Page 18: Mature optimization (Carlos Bueno, Facebook)

Directly measure what you are optimizing.

Page 19: Mature optimization (Carlos Bueno, Facebook)

Distrust numbers. Especially your own.

Page 20: Mature optimization (Carlos Bueno, Facebook)

“I don’t believe in the Performance Fairy.” Jeff Rothschild

Page 21: Mature optimization (Carlos Bueno, Facebook)

Monitoring & Investigation

•  Crashing is cheap.

•  No errors logged, but no data returned.

•  Did you buy faster servers?

•  Did you turn off slower servers?

•  Did some servers just die?

Page 22: Mature optimization (Carlos Bueno, Facebook)

Choose metrics carefully.

Page 23: Mature optimization (Carlos Bueno, Facebook)

Questions? carlos.bueno.org/optimization