-
Notifications
You must be signed in to change notification settings - Fork 25
/
sample-aws-ec2.devmodel
98 lines (90 loc) · 4.42 KB
/
sample-aws-ec2.devmodel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# sample.devmodel
# Sample configuration file for Flash device
# This file defines the request cost model for the Flash device used by ReFlex
###############################################################################
# Request Costs
###############################################################################
# ReFlex uses tokens as an I/O currency. We set a cost for a 4KB read request
# and determine the cost of other request types (i.e., write requests)
# and other request sizes relative to the cost of a 4KB read.
#
# Note: Default 4KB read cost of 100 tokens (instead of 1 token) is recommended
# for more accurate tracking of fractions of tokens during scheduling.
read_cost_4KB=100 # keep this default and adjust write cost in relation
write_cost_4KB=700 # see Step 2 below for instructions on how to set
###############################################################################
# Instructions for deriving request cost model:
###############################################################################
# Profile the device by running local Flash tests for different rd/wr ratios
# and request sizes and curve fit to find relative request costs. More details:
#
# You can use the SPDK example perf application to run local Flash tests.
# Step 1: Run 4KB read-only test. Sweep IOPS and measure tail read latency.
# Plot tail read latency vs. IOPS.
#
# Step 2: Run 4KB rd-wr tests with different rd/wr ratios. Plot tail read
# latency vs. RdIOPS + WrIOPS. Find a weight_factor that when applied
# to write IOs makes the latency-IOPS curves of different rd/wr ratios
# overlap. In other words, plot tail read latency vs. weighted IOPS,
# where weighted IOPS = RdIOPS + (weight_factor)(WrIOPS), and choose
# weight_factor to make the curves for diff rd/wr ratios overlap.
# This weight_factor represents the relative cost of a write IO.
# Set write_cost4B = read_cost_4KB * weight_factor
#
# Step 3: Run tests for different request sizes. Plot tail read latency vs.
# IOPS. Find a weight_factor that when applied to the non-4KB IOs
# makes the latency-throughput curve overlap with the 4KB curve.
# This weight_factor represents the relative cost for that IO size.
#
# In our experience, request cost tends to scale linearly with request size
# for most devices. However, write vs. read cost is device specific.
# Currently, we have only used ReFlex for 1KB and 4KB requests (which have
# the same request cost on the SSD we used).
###############################################################################
# Latency vs. Weighted IOPS curve (tokens/second limit for each latency SLO)
###############################################################################
# The request cost model, derived using instructions above, is a graph of
# tail read latency vs. weighted IOPS (measured in a currency of tokens/second).
#
# The request cost model tells you for each tail read latency service level
# objective (SLO) the corresponding token rate limit. Enter the p95_latency_limit
# and corresponding max_token_rate information in the config below for all latency
# SLOs you care about. Below is an example. Add, delete, and/or modify the entries.
#
# If your device has significantly different behaviour for read-only workloads
# compared to all other rd/wr mixed workloads, you can specify a token limit
# to be used specifically when the total device load is read-only.
# Use the parameter max_rdonly_token_rate for this.
max_token_rate=40000000 # max token rate supported by device (no latency SLO)
token_limits=(
{
p95_latency_limit : 500 #in us
max_token_rate : 24000000 #in tokens
max_rdonly_token_rate : 38000000 #in tokens
},
{
p95_latency_limit : 1000 #in us
max_token_rate : 33000000 #in tokens
max_rdonly_token_rate : 39000000 #in tokens
},
{
p95_latency_limit : 1500 #in us
max_token_rate : 35000000 #in tokens
max_rdonly_token_rate : 40000000 #in tokens
},
{
p95_latency_limit : 2000 #in us
max_token_rate : 37000000 #in tokens
max_rdonly_token_rate : 41000000 #in tokens
},
{
p95_latency_limit : 2500 #in us
max_token_rate : 39000000 #in tokens
max_rdonly_token_rate : 41000000 #in tokens
},
{
p95_latency_limit : 3000 #in us
max_token_rate : 41000000 #in tokens
max_rdonly_token_rate : 41500000 #in tokens
}
)