Targeted Resource Management in Multi-tenant Distributed Systems
Jonathan Mace
Brown University
Peter Bodik
MSR Redmond
Rodrigo Fonseca
Brown University
Madanlal Musuvathi
MSR Redmond
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
Jonathan Mace
Brown University
Peter Bodik
MSR Redmond
Rodrigo Fonseca
Brown University
Madanlal Musuvathi
MSR Redmond
2
Failure in availability zone cascades to shared control plane, causes thread pool starvation for all zones
2
Failure in availability zone cascades to shared control plane, causes thread pool starvation for all zones
Aggressive background task responds to increased hardware capacity with deluge of warnings and logging
2
Code change increases database usage, shifts bottleneck to unmanaged application-level lock
Failure in availability zone cascades to shared control plane, causes thread pool starvation for all zones
Aggressive background task responds to increased hardware capacity with deluge of warnings and logging
2
Code change increases database usage, shifts bottleneck to unmanaged application-level lock
Failure in availability zone cascades to shared control plane, causes thread pool starvation for all zones
Aggressive background task responds to increased hardware capacity with deluge of warnings and logging
2
Shared storage layer bottlenecks circumvent resource management layer
Code change increases database usage, shifts bottleneck to unmanaged application-level lock
Failure in availability zone cascades to shared control plane, causes thread pool starvation for all zones
Aggressive background task responds to increased hardware capacity with deluge of warnings and logging
2
Shared storage layer bottlenecks circumvent resource management layer
Code change increases database usage, shifts bottleneck to unmanaged application-level lock
Failure in availability zone cascades to shared control plane, causes thread pool starvation for all zones
Aggressive background task responds to increased hardware capacity with deluge of warnings and logging
3
Shared storage layer bottlenecks circumvent resource management layer
Code change increases database usage, shifts bottleneck to unmanaged application-level lock
Failure in availability zone cascades to shared control plane, causes thread pool starvation for all zones
Aggressive background task responds to increased hardware capacity with deluge of warnings and logging
3
Shared storage layer bottlenecks circumvent resource management layer
Code change increases database usage, shifts bottleneck to unmanaged application-level lock
Failure in availability zone cascades to shared control plane, causes thread pool starvation for all zones
Aggressive background task responds to increased hardware capacity with deluge of warnings and logging
3
Shared storage layer bottlenecks circumvent resource management layer
Containers / VMs
4
Containers / VMs
Shared Systems: Storage, Database, Queueing, etc.
4
5
5
Monitors resource usage of each tenant in near real-time Actively schedules tenants and activities
5
Monitors resource usage of each tenant in near real-time Actively schedules tenants and activities High-level, centralized policies:
Encapsulates resource management logic
5
Monitors resource usage of each tenant in near real-time Actively schedules tenants and activities High-level, centralized policies:
Encapsulates resource management logic Abstractions – not specific to resource type, system Achieve different goals: guarantee average latencies, fair share a resource, etc.
5
6
HDFS NameNode
6
HDFS DataNode HDFS DataNode HDFS DataNode
HDFS NameNode
6
HDFS DataNode HDFS DataNode HDFS DataNode
HDFS NameNode
Rename
6
HDFS DataNode HDFS DataNode HDFS DataNode
HDFS NameNode
Read Rename
6
HDFS DataNode HDFS DataNode HDFS DataNode
HDFS NameNode
Read Rename
6
HDFS NameNode HDFS DataNode HDFS DataNode HDFS DataNode
7
HDFS NameNode HDFS DataNode HDFS DataNode HDFS DataNode
7
time 500
HDFS NameNode HDFS DataNode HDFS DataNode HDFS DataNode
7
time 500
HDFS NameNode HDFS DataNode HDFS DataNode HDFS DataNode
8
500
HDFS NameNode HDFS DataNode HDFS DataNode HDFS DataNode
8
500 12
HDFS NameNode HDFS DataNode HDFS DataNode HDFS DataNode
8
500 12
HDFS NameNode HDFS DataNode HDFS DataNode HDFS DataNode
9
500 12
HDFS NameNode HDFS DataNode HDFS DataNode HDFS DataNode
9
500 12 500
HDFS NameNode HDFS DataNode HDFS DataNode HDFS DataNode
10
500 12 500
HDFS NameNode HDFS DataNode HDFS DataNode HDFS DataNode
10
500 12 500
HDFS NameNode HDFS DataNode HDFS DataNode HDFS DataNode
10
500 12 500 500
Local storage
HDFS DataNode
11
Local storage
HDFS DataNode
11
Local storage
HBase RegionServer
HDFS DataNode
11
Local storage
HBase RegionServer
HDFS DataNode
11
Local storage
HBase RegionServer
HDFS DataNode MapReduce Shuffler
Yarn Container Yarn Container Hadoop YARN Container MapReduce Tasks
11
Local storage
HBase RegionServer
HDFS DataNode MapReduce Shuffler
Yarn Container Yarn Container Hadoop YARN Container MapReduce Tasks
11
Local storage
HBase RegionServer
HDFS DataNode Hadoop YARN NodeManager
Yarn Container Yarn Container Hadoop YARN Container MapReduce Local storage
HBase RegionServer
HDFS DataNode Hadoop YARN NodeManager
Yarn Container Yarn Container Hadoop YARN Container MapReduce Local storage
HBase RegionServer
HDFS DataNode MapReduce Shuffler
Yarn Container Yarn Container Hadoop YARN Container MapReduce Tasks
11
12
Co-ordinated control across processes, machines, and services
12
Co-ordinated control across processes, machines, and services Handle system and application level resources
12
Co-ordinated control across processes, machines, and services Handle system and application level resources Principals: tenants, background tasks
12
Co-ordinated control across processes, machines, and services Handle system and application level resources Principals: tenants, background tasks Real-time and reactive
12
Co-ordinated control across processes, machines, and services Handle system and application level resources Principals: tenants, background tasks Real-time and reactive Efficient: Only control what is needed
12
13
14
Tenant Requests
14
Workflows
Purpose: identify requests from different users, background activities eg, all requests from a tenant over time eg, data balancing in HDFS
15
Workflows
Purpose: identify requests from different users, background activities eg, all requests from a tenant over time eg, data balancing in HDFS Unit of resource measurement, attribution, and enforcement
15
Workflows
Purpose: identify requests from different users, background activities eg, all requests from a tenant over time eg, data balancing in HDFS Unit of resource measurement, attribution, and enforcement Tracks a request across varying levels of granularity
Orthogonal to threads, processes, network flows, etc.
15
Workflows
16
Workflows
16
Workflows Resources Purpose: cope with diversity of resources
16
Workflows Resources Purpose: cope with diversity of resources What we need:
16
Workflows Resources Purpose: cope with diversity of resources What we need:
16
Workflows Resources Purpose: cope with diversity of resources What we need:
Slowdown Ratio of how slow the resource is now compared to its baseline performance with no contention.
16
Workflows Resources Purpose: cope with diversity of resources What we need:
Slowdown Ratio of how slow the resource is now compared to its baseline performance with no contention.
Load Fraction of current utilization that we can attribute to each workflow
16
Workflows Resources
17
Purpose: cope with diversity of resources What we need:
Slowdown Ratio of how slow the resource is now compared to its baseline performance with no contention.
Load Fraction of current utilization that we can attribute to each workflow
Workflows Resources
17
Purpose: cope with diversity of resources What we need:
Slowdown Ratio of how slow the resource is now compared to its baseline performance with no contention.
Load Fraction of current utilization that we can attribute to each workflow
Workflows Resources Slowdown (queue time + execute time) / execute time
=> slowdown 11 Load time spent executing
=> load 10
17
Purpose: cope with diversity of resources What we need:
Slowdown Ratio of how slow the resource is now compared to its baseline performance with no contention.
Load Fraction of current utilization that we can attribute to each workflow
Workflows Resources
17
Workflows Resources Control Points
Goal: enforce resource management decisions
18
Workflows Resources Control Points
Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue
18
Workflows Resources Control Points
Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue
19
Workflows Resources Control Points
Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue
19
Workflows Resources Control Points
Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue
19
Workflows Resources Control Points
Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue
19
Workflows Resources Control Points
Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue
19
Workflows Resources Control Points
Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue
19
Workflows Resources Control Points
Goal: enforce resource management decisions Decoupled from resources Rate-limits workflows, agnostic to underlying implementation e.g., token bucket priority queue
19
Workflows Resources Control Points
20
Pervasive Measurement
1. Pervasive Measurement
Aggregated locally then reported centrally once per second
Workflows Resources Control Points
20
Retro Controller API
Pervasive Measurement
1. Pervasive Measurement
Aggregated locally then reported centrally once per second
2. Centralized Controller
Global, abstracted view of the system
Workflows Resources Control Points
20
Retro Controller API
Pervasive Measurement
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
Policy Policy Policy
Workflows Resources Control Points
20
Retro Controller API
Pervasive Measurement
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
Co-ordinates enforcement using distributed token bucket
Policy Policy Policy
Workflows Resources Control Points Distributed Enforcement
20
Retro Controller API
Distributed Enforcement Pervasive Measurement Workflows Resources Control Points
Policy Policy Policy
Easier to write Reusable
21
22
Policy
22
H High Priority Workflows
Policy
“200ms average request latency”
22
H High Priority Workflows
Policy
L Low Priority Workflows “200ms average request latency” (use spare capacity)
22
H High Priority Workflows
Policy
L Low Priority Workflows “200ms average request latency” (use spare capacity) monitor latencies
22
H High Priority Workflows
Policy
L Low Priority Workflows “200ms average request latency” (use spare capacity) monitor latencies attribute interference
22
H High Priority Workflows
Policy
L Low Priority Workflows “200ms average request latency” (use spare capacity) monitor latencies throttle interfering workflows
23
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 else // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints() // apply new rates 16 set_rate(cpoint, lopri, scalefactor * get_rate(cpoint, lopri)
H High Priority Workflows
Policy
L Low Priority Workflows
23
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 else // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints() // apply new rates 16 set_rate(cpoint, lopri, scalefactor * get_rate(cpoint, lopri)
H High Priority Workflows
Policy
L Low Priority Workflows
24
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 else // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints() // apply new rates 16 set_rate(cpoint, lopri, scalefactor * get_rate(cpoint, lopri)
H High Priority Workflows
Policy
L Low Priority Workflows
Select the high priority workflow W with worst performance
24
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 else // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints() // apply new rates 16 set_rate(cpoint, lopri, scalefactor * get_rate(cpoint, lopri)
H High Priority Workflows
Policy
L Low Priority Workflows
Select the high priority workflow W with worst performance Weight low priority workflows by their interference with W
24
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 else // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints() // apply new rates 16 set_rate(cpoint, lopri, scalefactor * get_rate(cpoint, lopri)
H High Priority Workflows
Policy
L Low Priority Workflows
Select the high priority workflow W with worst performance Weight low priority workflows by their interference with W Throttle low priority workflows proportionally to their weight
25
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 else // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints() // apply new rates 16 set_rate(cpoint, lopri, scalefactor * get_rate(cpoint, lopri)
H High Priority Workflows
Policy
L Low Priority Workflows
Weight low priority workflows by their interference with W
Select the high priority workflow W with worst performance
Throttle low priority workflows proportionally to their weight
26
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 else // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints() // apply new rates 16 set_rate(cpoint, lopri, scalefactor * get_rate(cpoint, lopri)
H High Priority Workflows
Policy
L Low Priority Workflows
Throttle low priority workflows proportionally to their weight
Select the high priority workflow W with worst performance Weight low priority workflows by their interference with W
27
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 else // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints() // apply new rates 16 set_rate(cpoint, lopri, scalefactor * get_rate(cpoint, lopri)
H High Priority Workflows
Policy
L Low Priority Workflows Select the high priority workflow W with worst performance Weight low priority workflows by their interference with W Throttle low priority workflows proportionally to their weight
27
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 else // release 14 scalefactor = 1 + β 15 foreach cpoint in controlpoints() // apply new rates 16 set_rate(cpoint, lopri, scalefactor * get_rate(cpoint, lopri)
H High Priority Workflows
Policy
L Low Priority Workflows Select the high priority workflow W with worst performance Weight low priority workflows by their interference with W Throttle low priority workflows proportionally to their weight
28
Detect most overloaded resource Fair-share resource between tenants using it
Policy
28
Detect most overloaded resource Fair-share resource between tenants using it
Estimate demands and capacities from measurements
Policy Policy
28
Detect most overloaded resource Fair-share resource between tenants using it
Estimate demands and capacities from measurements
Policy Policy
28
29
30
Retro implementation in Java
Instrumentation Library Central controller implementation
30
Retro implementation in Java
Instrumentation Library Central controller implementation
To enable Retro
Propagate Workflow ID within application (like X-Trace, Dapper) Instrument resources with wrapper classes
30
Retro implementation in Java
Instrumentation Library Central controller implementation
To enable Retro
Propagate Workflow ID within application (like X-Trace, Dapper) Instrument resources with wrapper classes
Overheads
31
Retro implementation in Java
Instrumentation Library Central controller implementation
To enable Retro
Propagate Workflow ID within application (like X-Trace, Dapper) Instrument resources with wrapper classes
Overheads
Resource instrumentation automatic using AspectJ
31
Retro implementation in Java
Instrumentation Library Central controller implementation
To enable Retro
Propagate Workflow ID within application (like X-Trace, Dapper) Instrument resources with wrapper classes
Overheads
Resource instrumentation automatic using AspectJ Overall 50-200 lines per system to modify RPCs
31
Retro implementation in Java
Instrumentation Library Central controller implementation
To enable Retro
Propagate Workflow ID within application (like X-Trace, Dapper) Instrument resources with wrapper classes
Overheads
Resource instrumentation automatic using AspectJ Overall 50-200 lines per system to modify RPCs Retro overhead: max 1-2% on throughput, latency
31
32
YARN MapReduce ZooKeeper
HDFS HBase
32
YARN MapReduce ZooKeeper
HBase (YCSB) HDFS clients Background Data Replication Background Heartbeats
HDFS HBase
32
YARN MapReduce ZooKeeper
HBase (YCSB) HDFS clients Background Data Replication Background Heartbeats
CPU, Disk, Network (All systems) Locks, Queues (HDFS, HBase)
HDFS HBase
32
YARN MapReduce ZooKeeper
HBase (YCSB) HDFS clients Background Data Replication Background Heartbeats
CPU, Disk, Network (All systems) Locks, Queues (HDFS, HBase)
LatencySLO
Bottleneck Fairness Dominant Resource Fairness
HDFS HBase
32
Policies for a mixture of systems, workflows, and resources Results on clusters up to 200 nodes YARN MapReduce ZooKeeper
HBase (YCSB) HDFS clients Background Data Replication Background Heartbeats
CPU, Disk, Network (All systems) Locks, Queues (HDFS, HBase)
LatencySLO
Bottleneck Fairness Dominant Resource Fairness
See paper for full experiment results HDFS HBase
32
Policies for a mixture of systems, workflows, and resources Results on clusters up to 200 nodes YARN MapReduce ZooKeeper
HBase (YCSB) HDFS clients Background Data Replication Background Heartbeats
CPU, Disk, Network (All systems) Locks, Queues (HDFS, HBase)
LatencySLO
Bottleneck Fairness Dominant Resource Fairness
See paper for full experiment results This talk LatencySLO policy results HDFS HBase
32
Policies for a mixture of systems, workflows, and resources Results on clusters up to 200 nodes YARN MapReduce ZooKeeper
HBase (YCSB) HDFS clients Background Data Replication Background Heartbeats
CPU, Disk, Network (All systems) Locks, Queues (HDFS, HBase)
LatencySLO
Bottleneck Fairness Dominant Resource Fairness
See paper for full experiment results This talk LatencySLO policy results HDFS HBase
32
HDFS read 8k HBase read 1 cached row HBase read 1 row
33
HDFS read 8k HBase read 1 cached row HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
33
1 10 100 1000 5 10 15 20 25 30 0.1
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
33
1 10 100 1000 5 10 15 20 25 30 0.1
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
33
1 10 100 1000 5 10 15 20 25 30 0.1
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan SLO target
33
1 10 100 1000 5 10 15 20 25 30 0.1
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan SLO target
33
1 10 100 1000 5 10 15 20 25 30 0.1
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan SLO target
33
5 10 15 5 10 15 20 25 30
Slowdown Time [minutes]
1 10 100 1000 5 10 15 20 25 30 0.1
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan SLO target
34
5 10 15 5 10 15 20 25 30
Slowdown Time [minutes]
1 10 100 1000 5 10 15 20 25 30 0.1
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row Disk HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan SLO target
34
5 10 15 5 10 15 20 25 30
Slowdown Time [minutes]
1 10 100 1000 5 10 15 20 25 30 0.1
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row Disk CPU HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan SLO target
34
5 10 15 5 10 15 20 25 30
Slowdown Time [minutes]
1 10 100 1000 5 10 15 20 25 30 0.1
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row Disk CPU HDFS NN Lock HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan SLO target
34
5 10 15 5 10 15 20 25 30
Slowdown Time [minutes]
1 10 100 1000 5 10 15 20 25 30 0.1
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row Disk CPU HDFS NN Lock HDFS NN Queue HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan SLO target
34
5 10 15 5 10 15 20 25 30
Slowdown Time [minutes]
1 10 100 1000 5 10 15 20 25 30 0.1
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row Disk CPU HDFS NN Lock HDFS NN Queue HBase Queue HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan SLO target
34
1 10 100 1000 5 10 15 20 25 30 0.1
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row
0.1 1 10 5 10 15 20 25 30
SLO-Normalized Latency Time [minutes]
+ SLO Policy Enabled
SLO target HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
35
SLO target
1 10 100 1000 5 10 15 20 25 30 0.1
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row
0.1 1 10 5 10 15 20 25 30
SLO-Normalized Latency Time [minutes]
+ SLO Policy Enabled
SLO target HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
35
SLO target
0.1 1 10 5 10 15 20 25 30
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
36
0.1 1 10 5 10 15 20 25 30
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row
0.2 1
HBase Table Scan HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
36
0.1 1 10 5 10 15 20 25 30
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row
0.2 1
HBase Table Scan HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
36
0.1 1 10 5 10 15 20 25 30
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row
0.2 1
HBase Table Scan HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
36
0.1 1 10 5 10 15 20 25 30
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row
0.2 1
HBase Table Scan
0.5 1
HDFS mkdir HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
36
0.1 1 10 5 10 15 20 25 30
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row
0.2 1
HBase Table Scan
0.5 1
HDFS mkdir HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
36
0.1 1 10 5 10 15 20 25 30
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row
0.2 1
HBase Table Scan
0.5 1
HDFS mkdir HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
36
0.1 1 10 5 10 15 20 25 30
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row 0.5
1
HBase Cached Table Scan
0.2 1
HBase Table Scan
0.5 1
HDFS mkdir HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
36
0.1 1 10 5 10 15 20 25 30
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row 0.5
1
HBase Cached Table Scan
0.2 1
HBase Table Scan
0.5 1
HDFS mkdir HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
36
0.1 1 10 5 10 15 20 25 30
SLO-Normalized Latency Time [minutes] HDFS read 8k HBase read 1 cached row 0.5
1
HBase Cached Table Scan
0.2 1
HBase Table Scan
0.5 1
HDFS mkdir HBase read 1 row HBase Cached Table Scan HDFS mkdir HBase Table Scan
36
37
Resource management for shared distributed systems
37
Resource management for shared distributed systems Centralized resource management
37
Resource management for shared distributed systems Centralized resource management
Comprehensive: resources, processes, tenants, background tasks
37
Resource management for shared distributed systems Centralized resource management
Comprehensive: resources, processes, tenants, background tasks Abstractions for writing concise, general-purpose policies:
Workflows Resources (slowdown, load) Control points
37
Resource management for shared distributed systems Centralized resource management
http://cs.brown.edu/~jcmace
Comprehensive: resources, processes, tenants, background tasks Abstractions for writing concise, general-purpose policies:
Workflows Resources (slowdown, load) Control points