multi tenant distributed systems
play

Multi-tenant Distributed Systems Jonathan Mace Peter Bodik Rodrigo - PowerPoint PPT Presentation

Targeted Resource Management in Multi-tenant Distributed Systems Jonathan Mace Peter Bodik Rodrigo Fonseca Madanlal Musuvathi Brown University MSR Redmond Brown University MSR Redmond Resource Management in Multi-Tenant Systems 2


  1. Workflows 16

  2. Workflows Resources Purpose: cope with diversity of resources 16

  3. Workflows Resources Purpose: cope with diversity of resources What we need: 1. Identify overloaded resources 16

  4. Workflows Resources Purpose: cope with diversity of resources What we need: 1. Identify overloaded resources 2. Identify culprit workflows 16

  5. Workflows Resources Purpose: cope with diversity of resources What we need: 1. Identify overloaded resources Slowdown Ratio of how slow the resource is now compared to its baseline performance with no contention. 2. Identify culprit workflows 16

  6. Workflows Resources Purpose: cope with diversity of resources What we need: 1. Identify overloaded resources Slowdown Ratio of how slow the resource is now compared to its baseline performance with no contention. 2. Identify culprit workflows Load Fraction of current utilization that we can attribute to each workflow 16

  7. Workflows Resources Purpose: cope with diversity of resources What we need: 1. Identify overloaded resources Slowdown Ratio of how slow the resource is now compared to its baseline performance with no contention. 2. Identify culprit workflows Load Fraction of current utilization that we can attribute to each workflow 17

  8. Workflows Resources Purpose: cope with diversity of resources What we need: 1. Identify overloaded resources Slowdown Ratio of how slow the resource is now compared to its baseline performance with no contention. 2. Identify culprit workflows Load Fraction of current utilization that we can attribute to each workflow 17

  9. Slowdown (queue time + execute time) / execute time eg. 100ms queue, 10ms execute => slowdown 11 Load time spent executing eg. 10ms execute => load 10 Workflows Resources Purpose: cope with diversity of resources What we need: 1. Identify overloaded resources Slowdown Ratio of how slow the resource is now compared to its baseline performance with no contention. 2. Identify culprit workflows Load Fraction of current utilization that we can attribute to each workflow 17

  10. Workflows Resources 17

  11. Control Points Workflows Resources Goal: enforce resource management decisions 18

  12. Control Points Workflows Resources Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue 18

  13. Control Points Workflows Resources Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue 19

  14. Control Points Workflows Resources Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue 19

  15. Control Points Workflows Resources Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue 19

  16. Control Points Workflows Resources Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue 19

  17. Control Points Workflows Resources Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue 19

  18. Control Points Workflows Resources Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue 19

  19. Control Points Workflows Resources Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue 19

  20. Control Points Workflows Resources 20

  21. Pervasive Measurement Control Points Workflows Resources 1. Pervasive Measurement Aggregated locally then reported centrally once per second 20

  22. Pervasive Measurement Retro Controller API Control Points Workflows Resources 1. Pervasive Measurement Aggregated locally then reported centrally once per second 2. Centralized Controller Global, abstracted view of the system 20

  23. Pervasive Measurement Retro Controller API Policy Policy Policy Control Points Workflows Resources 1. Pervasive Measurement Aggregated locally then reported centrally once per second 2. Centralized Controller Global, abstracted view of the system Policies run in continuous control loop 20

  24. Pervasive Measurement Retro Controller API Policy Policy Policy Distributed Enforcement Workflows Resources Control Points 1. Pervasive Measurement Aggregated locally then reported centrally once per second 2. Centralized Controller Global, abstracted view of the system Policies run in continuous control loop 3. Distributed Enforcement 20 Co-ordinates enforcement using distributed token bucket

  25. Pervasive Measurement Retro Controller API Policy Policy Policy Distributed Enforcement Control Points Workflows Resources “Control Plane” for resource management Global, abstracted view of the system Easier to write Reusable 21

  26. Example: LatencySLO Policy 22

  27. Example: LatencySLO Policy H High Priority Workflows “200ms average request latency” 22

  28. Example: LatencySLO Policy H High Priority Workflows L Low Priority Workflows “200ms average request latency” (use spare capacity) 22

  29. Example: LatencySLO Policy H High Priority Workflows L Low Priority Workflows “200ms average request latency” (use spare capacity) monitor latencies 22

  30. Example: LatencySLO Policy H High Priority Workflows L Low Priority Workflows “200ms average request latency” (use spare capacity) monitor latencies attribute interference 22

  31. Example: LatencySLO Policy H High Priority Workflows L Low Priority Workflows “200ms average request latency” (use spare capacity) monitor latencies throttle interfering workflows 22

  32. Example: LatencySLO Policy H High Priority Workflows L Low Priority Workflows 1 foreach candidate in H 2 miss[candidate] = latency (candidate) / guarantee[candidate] 3 W = candidate in H with max miss[candidate] 4 foreach rsrc in resources () // calculate importance of each resource for hipri 5 importance[rsrc] = latency ( W , rsrc) * log( slowdown (rsrc)) 6 foreach lopri in L // calculate low priority workflow interference 7 interference[lopri] = Σ rsrc importance[rsrc] * load (lopri, rsrc) / load (rsrc) 8 foreach lopri in L // normalize interference 9 interference[lopri] /= Σ k interference[k] 10 foreach lopri in L 11 if miss[ W ] > 1 // throttle 12 scalefactor = 1 – α * (miss[ W ] – 1) * interference[lopri] 13 e lse // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints () // apply new rates 16 set_rate (cpoint, lopri, scalefactor * get_rate (cpoint, lopri) 23

  33. Example: LatencySLO Policy H High Priority Workflows L Low Priority Workflows 1 foreach candidate in H 2 miss[candidate] = latency (candidate) / guarantee[candidate] 3 W = candidate in H with max miss[candidate] 4 foreach rsrc in resources () // calculate importance of each resource for hipri 5 importance[rsrc] = latency ( W , rsrc) * log( slowdown (rsrc)) 6 foreach lopri in L // calculate low priority workflow interference 7 interference[lopri] = Σ rsrc importance[rsrc] * load (lopri, rsrc) / load (rsrc) 8 foreach lopri in L // normalize interference 9 interference[lopri] /= Σ k interference[k] 10 foreach lopri in L 11 if miss[ W ] > 1 // throttle 12 scalefactor = 1 – α * (miss[ W ] – 1) * interference[lopri] 13 e lse // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints () // apply new rates 16 set_rate (cpoint, lopri, scalefactor * get_rate (cpoint, lopri) 23

  34. Example: LatencySLO Policy H High Priority Workflows L Low Priority Workflows 1 foreach candidate in H Select the high priority workflow W with worst performance 2 miss[candidate] = latency (candidate) / guarantee[candidate] 3 W = candidate in H with max miss[candidate] 4 foreach rsrc in resources () // calculate importance of each resource for hipri 5 importance[rsrc] = latency ( W , rsrc) * log( slowdown (rsrc)) 6 foreach lopri in L // calculate low priority workflow interference 7 interference[lopri] = Σ rsrc importance[rsrc] * load (lopri, rsrc) / load (rsrc) 8 foreach lopri in L // normalize interference 9 interference[lopri] /= Σ k interference[k] 10 foreach lopri in L 11 if miss[ W ] > 1 // throttle 12 scalefactor = 1 – α * (miss[ W ] – 1) * interference[lopri] 13 e lse // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints () // apply new rates 16 set_rate (cpoint, lopri, scalefactor * get_rate (cpoint, lopri) 24

  35. Example: LatencySLO Policy H High Priority Workflows L Low Priority Workflows 1 foreach candidate in H Select the high priority workflow W with worst performance 2 miss[candidate] = latency (candidate) / guarantee[candidate] 3 W = candidate in H with max miss[candidate] 4 foreach rsrc in resources () // calculate importance of each resource for hipri Weight low priority workflows by their interference with W 5 importance[rsrc] = latency ( W , rsrc) * log( slowdown (rsrc)) 6 foreach lopri in L // calculate low priority workflow interference 7 interference[lopri] = Σ rsrc importance[rsrc] * load (lopri, rsrc) / load (rsrc) 8 foreach lopri in L // normalize interference 9 interference[lopri] /= Σ k interference[k] 10 foreach lopri in L 11 if miss[ W ] > 1 // throttle 12 scalefactor = 1 – α * (miss[ W ] – 1) * interference[lopri] 13 e lse // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints () // apply new rates 16 set_rate (cpoint, lopri, scalefactor * get_rate (cpoint, lopri) 24

  36. Example: LatencySLO Policy H High Priority Workflows L Low Priority Workflows 1 foreach candidate in H Select the high priority workflow W with worst performance 2 miss[candidate] = latency (candidate) / guarantee[candidate] 3 W = candidate in H with max miss[candidate] 4 foreach rsrc in resources () // calculate importance of each resource for hipri Weight low priority workflows by their interference with W 5 importance[rsrc] = latency ( W , rsrc) * log( slowdown (rsrc)) 6 foreach lopri in L // calculate low priority workflow interference 7 interference[lopri] = Σ rsrc importance[rsrc] * load (lopri, rsrc) / load (rsrc) 8 foreach lopri in L // normalize interference 9 interference[lopri] /= Σ k interference[k] 10 foreach lopri in L Throttle low priority workflows proportionally to their weight 11 if miss[ W ] > 1 // throttle 12 scalefactor = 1 – α * (miss[ W ] – 1) * interference[lopri] 13 e lse // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints () // apply new rates 16 set_rate (cpoint, lopri, scalefactor * get_rate (cpoint, lopri) 24

  37. Example: LatencySLO Policy H High Priority Workflows L Low Priority Workflows Select the high priority workflow W with worst performance 1 foreach candidate in H 2 miss[candidate] = latency (candidate) / guarantee[candidate] 3 W = candidate in H with max miss[candidate] 4 foreach rsrc in resources () // calculate importance of each resource for hipri 5 importance[rsrc] = latency ( W , rsrc) * log( slowdown (rsrc)) Weight low priority workflows by their interference with W 6 foreach lopri in L // calculate low priority workflow interference 7 interference[lopri] = Σ rsrc importance[rsrc] * load (lopri, rsrc) / load (rsrc) 8 foreach lopri in L // normalize interference 9 interference[lopri] /= Σ k interference[k] 10 foreach lopri in L 11 if miss[ W ] > 1 // throttle Throttle low priority workflows proportionally to their weight 12 scalefactor = 1 – α * (miss[ W ] – 1) * interference[lopri] 13 e lse // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints () // apply new rates 16 set_rate (cpoint, lopri, scalefactor * get_rate (cpoint, lopri) 25

  38. Example: LatencySLO Policy H High Priority Workflows L Low Priority Workflows Select the high priority workflow W with worst performance 1 foreach candidate in H 2 miss[candidate] = latency (candidate) / guarantee[candidate] 3 W = candidate in H with max miss[candidate] Weight low priority workflows by their interference with W 4 foreach rsrc in resources () // calculate importance of each resource for hipri 5 importance[rsrc] = latency ( W , rsrc) * log( slowdown (rsrc)) 6 foreach lopri in L // calculate low priority workflow interference 7 interference[lopri] = Σ rsrc importance[rsrc] * load (lopri, rsrc) / load (rsrc) 8 foreach lopri in L // normalize interference 9 interference[lopri] /= Σ k interference[k] 10 foreach lopri in L 11 if miss[ W ] > 1 // throttle Throttle low priority workflows proportionally to their weight 12 scalefactor = 1 – α * (miss[ W ] – 1) * interference[lopri] 13 e lse // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints () // apply new rates 16 set_rate (cpoint, lopri, scalefactor * get_rate (cpoint, lopri) 26

  39. Example: LatencySLO Policy H High Priority Workflows L Low Priority Workflows Select the high priority workflow W with worst performance 1 foreach candidate in H 2 miss[candidate] = latency (candidate) / guarantee[candidate] 3 W = candidate in H with max miss[candidate] Weight low priority workflows by their interference with W 4 foreach rsrc in resources () // calculate importance of each resource for hipri 5 importance[rsrc] = latency ( W , rsrc) * log( slowdown (rsrc)) 6 foreach lopri in L // calculate low priority workflow interference 7 interference[lopri] = Σ rsrc importance[rsrc] * load (lopri, rsrc) / load (rsrc) Throttle low priority workflows proportionally to their weight 8 foreach lopri in L // normalize interference 9 interference[lopri] /= Σ k interference[k] 10 foreach lopri in L 11 if miss[ W ] > 1 // throttle 12 scalefactor = 1 – α * (miss[ W ] – 1) * interference[lopri] 13 e lse // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints () // apply new rates 16 set_rate (cpoint, lopri, scalefactor * get_rate (cpoint, lopri) 27

  40. Example: LatencySLO Policy H High Priority Workflows L Low Priority Workflows Select the high priority workflow W with worst performance 1 foreach candidate in H 2 miss[candidate] = latency (candidate) / guarantee[candidate] 3 W = candidate in H with max miss[candidate] Weight low priority workflows by their interference with W 4 foreach rsrc in resources () // calculate importance of each resource for hipri 5 importance[rsrc] = latency ( W , rsrc) * log( slowdown (rsrc)) 6 foreach lopri in L // calculate low priority workflow interference 7 interference[lopri] = Σ rsrc importance[rsrc] * load (lopri, rsrc) / load (rsrc) Throttle low priority workflows proportionally to their weight 8 foreach lopri in L // normalize interference 9 interference[lopri] /= Σ k interference[k] 10 foreach lopri in L 11 if miss[ W ] > 1 // throttle 12 scalefactor = 1 – α * (miss[ W ] – 1) * interference[lopri] 13 e lse // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints () // apply new rates 16 set_rate (cpoint, lopri, scalefactor * get_rate (cpoint, lopri) 27

  41. Other types of policy… 28

  42. Other types of policy… Bottleneck Fairness Policy Detect most overloaded resource Fair-share resource between tenants using it 28

  43. Other types of policy… Bottleneck Fairness Policy Detect most overloaded resource Fair-share resource between tenants using it Policy Dominant Resource Fairness Estimate demands and capacities from measurements 28

  44. Other types of policy… Bottleneck Fairness Policy Detect most overloaded resource Fair-share resource between tenants using it Policy Dominant Resource Fairness Estimate demands and capacities from measurements Concise Any resources can be bottleneck (policy doesn’t care) Not system specific 28

  45. Evaluation 29

  46. Instrumentation 30

Recommend


More recommend