88
Treadmill: Tail Latency Measurement at Microsecond-level Precision Yunqi Zhang Johann Hauswald David Meisner Jason Mars Lingjia Tang

Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-level Precision

Yunqi Zhang Johann Hauswald David Meisner Jason Mars Lingjia Tang

Page 2: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

ScheduleWelcome

Section 1: Tail latency

08:40 ~ 09:00 — Overview of data centers and tail latency

09:00 ~ 09:30 — Common pitfalls for measuring tail latency

Coffee break

Section 2: Treadmill

10:00 ~ 10:20 — Overview of Treadmill

10:20 ~ 10:40 — Tail latency measurements with Treadmill

Section 3: Beyond just Treadmill

10:40 ~ 11:00 — Extending Treadmill to support your applications

11:00 ~ 11:20 — New applications enabled by Treadmill

2

Page 3: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Overview

Page 4: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Data centers

• Built in massive sizes

• Several football fields

• Expensive to construct

• 100s of millions capital cost1

• Consume huge amount of energy

• 3% of global energy supply21The Datacenter as a Computer2Global warming: Data centres to consume three times as much energy in next decade, experts warn

4

Page 5: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Internet services

• User interactive applications

• Powered by large-scale distributed systems

• Millions of user queries hitting the servers

5

Page 6: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Latency

latency distribution

eating time

waiting time +

eating time

6

Page 7: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Tail latency

• Often orders of magnitudes higher than average

• Directly affects user experience

• Resources are often provisioned based on tail latency

7

Page 8: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

–— Jeffrey Dean, Luiz Barroso “The Tail at Scale”

Google

“It is challenging for service providers to keep the tail of latency distribution short for interactive services as the size and complexity of the system scales up.”

Page 9: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Challenges

• Tail latency is sensitive to any variance in the system

• Many services operate at latency as low as microseconds

• Many architectural components are involved

9

Page 10: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Tail latency measurements

CloudSuite

Yahoo Cloud Serving Benchmark

MiBench

10

Page 11: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Tail latency measurements

CloudSuite

Yahoo Cloud Serving Benchmark

MiBench

10

Page 12: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Are we doing this right?

Page 13: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Common Pitfalls in Tail Latency Measurements

Page 14: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Tail latency measurements

load tester network server

13

Page 15: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Tail latency measurements

load tester network server

13

Page 16: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Tail latency measurements

load tester network server

13

Page 17: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Tail latency measurements

load tester network server

13

Page 18: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Tail latency measurements

load tester network server

13

Page 19: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Tail latency measurements

load tester network server

13

Page 20: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Tail latency measurements

load tester network server

13

Page 21: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Tail latency measurements

load tester network server

latency distribution

tail latency

13

Page 22: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Client-side queueing bias

load tester network server

14

Page 23: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Client-side queueing bias

load tester network server

14

Page 24: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

load tester

load tester

Client-side queueing bias

load tester network server

load tester network

14

Page 25: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

load tester

load tester

Client-side queueing bias

load tester network server

load tester

Multiple clients are needed to avoid client-side queueing bias

network

14

Page 26: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Query inter-arrival generation

closed-loop open-loop

[Closed v.s. Open System Models. ‘NSDI 2006]

15

Page 27: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Query inter-arrival generation

closed-loop open-loop

[Closed v.s. Open System Models. ‘NSDI 2006]

15

Page 28: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Query inter-arrival generation

closed-loop open-loop

[Closed v.s. Open System Models. ‘NSDI 2006]

15

Page 29: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Query inter-arrival generation

closed-loop open-loop

[Closed v.s. Open System Models. ‘NSDI 2006]

send() async_send()

15

Page 30: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Query inter-arrival generation

16

Page 31: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Query inter-arrival generation

16

Page 32: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Query inter-arrival generation

16

Page 33: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Query inter-arrival generation

Open-Loop

Closed-Loop

underestimate the tail

17

Page 34: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Query inter-arrival generation

Open-Loop

Closed-Loop

underestimate the tail

Open-loop is necessary to properly exercise the system queueing behavior

17

Page 35: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Statistical aggregation

18

Page 36: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Statistical aggregation

18

Page 37: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Statistical aggregation

18

Page 38: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Statistical aggregation

Client 2 Client 3 Client 4 Client 1

19

Page 39: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Statistical aggregation

20

Page 40: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Statistical aggregationGET(key)

SET(key, value)

20

Page 41: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Statistical aggregationGET(key)

SET(key, value)

20

Page 42: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Statistical aggregationGET(key)

SET(key, value)

GET(key)SET(key, value)

tail latency

20

Page 43: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Statistical aggregationGET(key)

SET(key, value)

GET(key)SET(key, value)

tail latency

Statistical aggregation must be performed carefully

20

Page 44: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Performance hysteresis

21

Page 45: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Performance hysteresis

More samples are probably going to help

21

Page 46: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Performance hysteresis

22

Page 47: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Performance hysteresis

Sufficient amount of samples are needed to get to the steady state

22

Page 48: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Performance hysteresis

23

Page 49: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Performance hysteresis

More samples do not help when underlying system state is changing

23

Page 50: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill

Page 51: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

How we started

• Precise tail latency measurements for Memcached

• How will my change impact the performance?

• How many servers should we buy next year?

• Collected extensive statistics on production traffic

• None of existing software delivered the precision

25

Page 52: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Building Treadmill

• Started in December 2013

• Deployed for Memcached in June 2014

• Extend to more services

26

Page 53: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Project status

• Open sourced in June 2016

• Paper published at ISCA 2016

• Maintained by Facebook

• Several research projects

27

Page 54: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Tail Latency Measurement Procedure

Page 55: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Overview

Server 1

Server 2

Clients(Treadmill) Server

(Hosting Service)

Stats

Stats

Server 1

1. Queueing Bias 2. Performance Hysteresis

3. Inter-arrival Generation4. Statistical aggregation

29

Page 56: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Overview

Server 1

Server 2

Clients(Treadmill) Server

(Hosting Service)

Stats

Stats

Server 1

1. Queueing Bias 2. Performance Hysteresis

3. Inter-arrival Generation4. Statistical aggregation

29

Page 57: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Avoid client-side queueing bias

• Setup

• Target total QPS

• Multiple Treadmill instances

• Monitor Treadmill utilization

• Analysis

• >20% utilization -> increase Treadmill instances

30

Page 58: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Avoid client-side queueing bias

• Implementation details

• Lock-free

• Inline execution for immediate response processing

31

Page 59: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Avoid performance hysteresis• Setup:

• Launch Treadmill

• Monitor P99s for convergence

• Analysis:

• Underlying architectural state could be changing if no convergence across runs

• Solutions:

1. Pinpoint architectural changes

2. Average across multiple runs

32

Page 60: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Inter-arrival Query Generation

• Setup:

• Exponentially distributed

• Included in Treadmill!

• Analysis:

• Validated

1Meisner, David, et al. "Power management of online data-intensive services." Computer Architecture (ISCA), 2011 38th Annual International Symposium on. IEEE, 2011.

1

33

Page 61: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Inter-arrival Query Generation

• Scheduler.cpp

1Meisner, David, et al. "Power management of online data-intensive services." Computer Architecture (ISCA), 2011 38th Annual International Symposium on. IEEE, 2011.

1

Scheduler.cpp

#includes omitted

namespaces omitted

double Scheduler::randomExponentialInterval(double mean) { static std::mt19937* rng = new std::mt19937(); std::uniform_real_distribution<double> dist(0, 1.0); /* Cap the lower end so that we don't return infinity */ return - log(std::max(dist(*rng), 1e-9)) * mean; }

void Scheduler::waitNs(int64_t ns) { /* We need to have *precise* timing, and it's not achievable with any other means like 'nanosleep' or EventBase. "pause" instruction would hint processor that this is a spin-loop, it will burn as much CPU as possible. The processor will use this hint to avoid memory order violation, which greatly improves its performance. */ for (auto start = nowNs(); nowNs() - start < ns;) { asm volatile("pause"); } }

34

Page 62: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Statistical aggregation

• Setup:

• Each TM instance generates its own distribution

• Dynamically binned histograms

• Analysis:

• Confirm shapes

35

Page 63: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Collecting Latency

• Collect all samples (naive approach)

• Static histograms (better)

• Bins for latencies, increment counter for each

• May be too coarse since bins are fixed

Increasingly large memory

footprint!

How to choose bins?

36

Page 64: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Collecting Latency

• Dynamic histograms (Treadmill) using 3 states

1. Warmup: steady-state queueing

2. Calibration: set min/max latency as bounds of histogram

3. Measurement: increment bin counter

1024 bins (default)

Adjust min/max as needed

37

Page 65: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Interpreting Results

• Stat types:

• Count (samples, exceptions)

• Continuous (latency, throughput)

• Statistics generated

• Class to extend stats collected

ThroughputN Samples: 977Average: 2495.86 +/- 22.5995Min: 0Max: 3306.8850% Percentile: 2507.1890% Percentile: 2757.995% Percentile: 2877.8299% Percentile: 3196.9Min Bin 1168.43Max Bin 5697

Workload: Sentiment Analysis Web Service (Natural Language Processing)

Request_latency N Samples: 249541 Average: 14117.3 +/- 171.81 Min: 2815.05 Max: 617634 50% Percentile: 5514.8 90% Percentile: 8074.41 95% Percentile: 35034.9 99% Percentile: 246403 Min Bin 4064.53 Max Bin 524288

38

Page 66: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Precise measurements

load tester network server

Memcached

tcpdump ground-truth

39

Page 67: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Measurement• 100,000 QPS

• 800,000 QPS

40

Page 68: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Measurement• 100,000 QPS

• 800,000 QPS

Fixed size gap

40

Page 69: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Extending Treadmill

Page 70: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Structure

• Top-level files shared across workloads

• Stat collection

• Query generation

• Treadmill configuration

• Guarantees against the 4 pitfalls described

42

Page 71: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Structure

• Only need to implement workload specific code

• Web service (RPC) framework agnostic

• Encapsulated in 3 files

43

Page 72: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Request.h

• Request typesenum Operation { GET, SET, DELETE };

44

Page 73: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

• How to talk to your service

• Connect to the server

• Send requests

Connection.h#includes omitted

DECLARE_string(hostname); DECLARE_int32(port);

namespaces omitted

class Connection<MemcachedService> { public: explicit Connection<MemcachedService>(folly::EventBase& event_base) { std::string host = nsLookUp(FLAGS_hostname); ConnectionOptions opts(host, FLAGS_port, mc_ascii_protocol); client_ = std::make_unique<AsyncMcClient>(event_base, opts); ... }

// Implement each request type folly::Future<MemcachedService::Reply> sendRequest(std::unique_ptr<typename MemcachedService::Request> request) { ...

if (request->which() == MemcachedRequest::GET) { // send synchronous GET request // auto req = std::make_shared<McGetRequest>(request->key()); fm_->addTask([this, req, p] () mutable { client_->sendSync(*req, std::chrono::milliseconds::zero()); p->setValue(MemcachedService::Reply()); }); } else if (request->which() == MemcachedRequest::SET) { // send SET request // } else { // send DELETE request // } return f; }

45

Page 74: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

• Determines the state (e.g., warm-up, or measurements)

• Determines the workload mix (e.g., 80% GET, 20% SET) by passing in a JSON config file

Workload.h #includes omitted // define warm-up samples DECLARE_int64(number_of_keys);

namespaces omitted

template <> class Workload<MemcachedService> { public: enum State { MEMCACHED_WARMUP, GET };

...

std::tuple<std::unique_ptr<MemcachedService::Request>, Promise<MemcachedService::Reply>, Future<MemcachedService::Reply>> getNextRequest() { ...

std::unique_ptr<MemcachedService::Request> request; if (state_ == State::MEMCACHED_WARMUP) { request = std::make_unique<MemcachedRequest>(MemcachedRequest::SET, std::move(key)); request->setValue(std::to_string(index_)); if (index_ == FLAGS_number_of_keys - 1) { LOG(INFO) << "WARMUP complete"; state_ = State::GET; } } else if (state_ == State::GET) { request = std::make_unique<MemcachedRequest>(MemcachedRequest::GET, std::move(key)); } ... } ...

46

Page 75: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

• Treadmill.cpp

• ExampleService.h

• Makefile.am

Boilerplate CodeTreadmill.cpp

#include "treadmill/services/memcached/Connection.h" #include "treadmill/services/memcached/Workload.h"

#include "treadmill/Treadmill.h"

int main(int argc, char* argv[]) { // Init treadmill facebook::windtunnel::treadmill::init(argc, argv); // Start treadmill return facebook::windtunnel::treadmill::run< facebook::windtunnel::treadmill::MemcachedService>(argc, argv); }

MemcachedService.h

#pragma once

#include "treadmill/services/memcached/Request.h"

namespace facebook { namespace windtunnel { namespace treadmill {

class MemcachedService { public: typedef MemcachedRequest Request; typedef MemcachedReply Reply; };

} // namespace treadmill } // namespace windtunnel } // namespace facebook

bin_PROGRAMS = treadmill_memcached

AM_CPPFLAGS = -I$(top_srcdir)/..

treadmill_memcached_SOURCES = \ Connection.h \ MemcachedService.h \ Request.h \ Workload.h \ Treadmill.cpp

treadmill_memcached_LDADD = \ $(top_builddir)/libtreadmill.a

47

Page 76: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

New Applications

Page 77: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Research — Complex Interactions• Understand the impact of complex architectural

factors and their interactions

• NUMA [NUMA Experience ’HPCA 2013, Tales of the Tail ’SoCC 2014]

• NIC [Architecting to Achieve a Billion Request per Second Throughput ’ISCA 2015, Tales of the Tail ’SoCC 2014, Chronos ’SoCC 2012]

• DVFS [Heracles ’ISCA 2015, Rubik ’MICRO 2015, Adrenaline ’HPCA 2015, Towards Energy Proportionality ’ISCA 2014, Dynamic Management of TurboMode ’HPCA 2014]

Architectural components have complex interactions

49

Page 78: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Tail latency attribution

• Architectural components

• NUMA allocation policy

• DVFS frequency governor

• TurboBoost

• NIC interrupt handling

50

Page 79: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

DVFS=performanceDVFS=ondemand

Complex interactions

Utiliz

atio

n

Utiliz

atio

n

• NIC IRQ policy • same-node • all-nodes

• DVFS Governor • ondemand • performance

NIC IRQ all-nodesNIC IRQ same-node

more frequencytransition overhead

51

Page 80: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

DVFS=performanceDVFS=ondemand

Complex interactions

Utiliz

atio

n

Utiliz

atio

n

• NIC IRQ policy • same-node • all-nodes

• DVFS Governor • ondemand • performance

NIC IRQ all-nodesNIC IRQ same-node

more frequencytransition overhead

Tail latency attribution enables understanding of complex interactions

51

Page 81: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Tail latency reduction

43% reduction in 99th-percentile latency93% reduction in its variance

52

Page 82: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Research — Benchmarking Web Services

• Steps:

1. Encapsulate application into Thrift RPC as web service

2. Implement Treadmill requirements and define dataset used

• Multiple projects using Treadmill in our group

• Investigating DNN based NLP applications

53

Page 83: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Industry - Give access to HW vendor

• HW vendors can test and provide reliable measurements to customers

• Perform similar analysis as previously outlined to find complex interactions

54

Page 84: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Industry - Performance A/B test

• Code change -> run A/B test to infer the performance impact (part of code review)

• Catch performance regressions before production

• Lower overhead than testing in production

55

Page 85: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Industry - Capacity Planning

• Find the maximum throughput each server can sustain given a tail latency requirement

56

Page 86: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Industry - Replaying production trace

• Record production traffic

• Store into a JSON workload configuration file

• Use treadmill to replay the production traffic

• Realistic inter-arrival rate to measure performance or debug hard-to-reproduce bugs

57

Page 87: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Q&A

Page 88: Treadmill: Tail Latency Measurement at Microsecond-level ...treadmill.eecs.umich.edu/pdf/Treadmill.pdf · Treadmill: Tail Latency Measurement at Microsecond-Level Precision Inter-arrival

Treadmill: Tail Latency Measurement at Microsecond-Level Precision

Thank you!

• Treadmill: https://github.com/facebook/treadmill

• Tutorial: http://treadmill.eecs.umich.edu

59