service-capacity-modeling 0.3.73__py3-none-any.whl → 0.3.75__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of service-capacity-modeling might be problematic. Click here for more details.

@@ -0,0 +1,172 @@
1
+ {
2
+ "instances": {
3
+ "i3en.large": {
4
+ "name": "i3en.large",
5
+ "cpu": 2,
6
+ "cpu_cores": 1,
7
+ "cpu_ghz": 3.1,
8
+ "cpu_ipc_scale": 1.0,
9
+ "ram_gib": 15.26,
10
+ "net_mbps": 2100.0,
11
+ "drive": {
12
+ "name": "ephem",
13
+ "size_gib": 1164,
14
+ "read_io_per_s": 42500,
15
+ "write_io_per_s": 32500,
16
+ "single_tenant": false,
17
+ "read_io_latency_ms": {
18
+ "low": 0.08,
19
+ "mid": 0.125,
20
+ "high": 0.2,
21
+ "confidence": 0.9,
22
+ "minimum_value": 0.07,
23
+ "maximum_value": 2.0
24
+ }
25
+ }
26
+ },
27
+ "i3en.xlarge": {
28
+ "name": "i3en.xlarge",
29
+ "cpu": 4,
30
+ "cpu_cores": 2,
31
+ "cpu_ghz": 3.1,
32
+ "cpu_ipc_scale": 1.0,
33
+ "ram_gib": 30.52,
34
+ "net_mbps": 4200.0,
35
+ "drive": {
36
+ "name": "ephem",
37
+ "size_gib": 2328,
38
+ "read_io_per_s": 85000,
39
+ "write_io_per_s": 65000,
40
+ "single_tenant": false,
41
+ "read_io_latency_ms": {
42
+ "low": 0.08,
43
+ "mid": 0.125,
44
+ "high": 0.2,
45
+ "confidence": 0.9,
46
+ "minimum_value": 0.07,
47
+ "maximum_value": 2.0
48
+ }
49
+ }
50
+ },
51
+ "i3en.2xlarge": {
52
+ "name": "i3en.2xlarge",
53
+ "cpu": 8,
54
+ "cpu_cores": 4,
55
+ "cpu_ghz": 3.1,
56
+ "cpu_ipc_scale": 1.0,
57
+ "ram_gib": 61.04,
58
+ "net_mbps": 8400.0,
59
+ "drive": {
60
+ "name": "ephem",
61
+ "size_gib": 4657,
62
+ "read_io_per_s": 170000,
63
+ "write_io_per_s": 130000,
64
+ "single_tenant": false,
65
+ "read_io_latency_ms": {
66
+ "low": 0.08,
67
+ "mid": 0.125,
68
+ "high": 0.2,
69
+ "confidence": 0.9,
70
+ "minimum_value": 0.07,
71
+ "maximum_value": 2.0
72
+ }
73
+ }
74
+ },
75
+ "i3en.3xlarge": {
76
+ "name": "i3en.3xlarge",
77
+ "cpu": 12,
78
+ "cpu_cores": 6,
79
+ "cpu_ghz": 3.1,
80
+ "cpu_ipc_scale": 1.0,
81
+ "ram_gib": 91.55,
82
+ "net_mbps": 12500.0,
83
+ "drive": {
84
+ "name": "ephem",
85
+ "size_gib": 6985,
86
+ "read_io_per_s": 255000,
87
+ "write_io_per_s": 195000,
88
+ "single_tenant": true,
89
+ "read_io_latency_ms": {
90
+ "low": 0.08,
91
+ "mid": 0.125,
92
+ "high": 0.2,
93
+ "confidence": 0.9,
94
+ "minimum_value": 0.07,
95
+ "maximum_value": 2.0
96
+ }
97
+ }
98
+ },
99
+ "i3en.6xlarge": {
100
+ "name": "i3en.6xlarge",
101
+ "cpu": 24,
102
+ "cpu_cores": 12,
103
+ "cpu_ghz": 3.1,
104
+ "cpu_ipc_scale": 1.0,
105
+ "ram_gib": 183.11,
106
+ "net_mbps": 25000.0,
107
+ "drive": {
108
+ "name": "ephem",
109
+ "size_gib": 13970,
110
+ "read_io_per_s": 510000,
111
+ "write_io_per_s": 390000,
112
+ "single_tenant": true,
113
+ "read_io_latency_ms": {
114
+ "low": 0.08,
115
+ "mid": 0.125,
116
+ "high": 0.2,
117
+ "confidence": 0.9,
118
+ "minimum_value": 0.07,
119
+ "maximum_value": 2.0
120
+ }
121
+ }
122
+ },
123
+ "i3en.12xlarge": {
124
+ "name": "i3en.12xlarge",
125
+ "cpu": 48,
126
+ "cpu_cores": 24,
127
+ "cpu_ghz": 3.1,
128
+ "cpu_ipc_scale": 1.0,
129
+ "ram_gib": 366.21,
130
+ "net_mbps": 50000.0,
131
+ "drive": {
132
+ "name": "ephem",
133
+ "size_gib": 27940,
134
+ "read_io_per_s": 1020000,
135
+ "write_io_per_s": 780000,
136
+ "single_tenant": true,
137
+ "read_io_latency_ms": {
138
+ "low": 0.08,
139
+ "mid": 0.125,
140
+ "high": 0.2,
141
+ "confidence": 0.9,
142
+ "minimum_value": 0.07,
143
+ "maximum_value": 2.0
144
+ }
145
+ }
146
+ },
147
+ "i3en.24xlarge": {
148
+ "name": "i3en.24xlarge",
149
+ "cpu": 96,
150
+ "cpu_cores": 48,
151
+ "cpu_ghz": 3.1,
152
+ "cpu_ipc_scale": 1.0,
153
+ "ram_gib": 732.42,
154
+ "net_mbps": 100000.0,
155
+ "drive": {
156
+ "name": "ephem",
157
+ "size_gib": 55879,
158
+ "read_io_per_s": 2040000,
159
+ "write_io_per_s": 1560000,
160
+ "single_tenant": true,
161
+ "read_io_latency_ms": {
162
+ "low": 0.08,
163
+ "mid": 0.125,
164
+ "high": 0.2,
165
+ "confidence": 0.9,
166
+ "minimum_value": 0.07,
167
+ "maximum_value": 2.0
168
+ }
169
+ }
170
+ }
171
+ }
172
+ }
@@ -0,0 +1,220 @@
1
+ {
2
+ "instances": {
3
+ "i4i.large": {
4
+ "name": "i4i.large",
5
+ "cpu": 2,
6
+ "cpu_cores": 1,
7
+ "cpu_ghz": 3.5,
8
+ "cpu_ipc_scale": 1.15,
9
+ "ram_gib": 15.26,
10
+ "net_mbps": 781.0,
11
+ "drive": {
12
+ "name": "ephem",
13
+ "size_gib": 436,
14
+ "read_io_per_s": 50000,
15
+ "write_io_per_s": 27500,
16
+ "single_tenant": false,
17
+ "read_io_latency_ms": {
18
+ "low": 0.1,
19
+ "mid": 0.125,
20
+ "high": 0.17,
21
+ "confidence": 0.9,
22
+ "minimum_value": 0.05,
23
+ "maximum_value": 2.0
24
+ }
25
+ }
26
+ },
27
+ "i4i.xlarge": {
28
+ "name": "i4i.xlarge",
29
+ "cpu": 4,
30
+ "cpu_cores": 2,
31
+ "cpu_ghz": 3.5,
32
+ "cpu_ipc_scale": 1.15,
33
+ "ram_gib": 30.52,
34
+ "net_mbps": 1875.0,
35
+ "drive": {
36
+ "name": "ephem",
37
+ "size_gib": 873,
38
+ "read_io_per_s": 100000,
39
+ "write_io_per_s": 55000,
40
+ "single_tenant": false,
41
+ "read_io_latency_ms": {
42
+ "low": 0.1,
43
+ "mid": 0.125,
44
+ "high": 0.17,
45
+ "confidence": 0.9,
46
+ "minimum_value": 0.05,
47
+ "maximum_value": 2.0
48
+ }
49
+ }
50
+ },
51
+ "i4i.2xlarge": {
52
+ "name": "i4i.2xlarge",
53
+ "cpu": 8,
54
+ "cpu_cores": 4,
55
+ "cpu_ghz": 3.5,
56
+ "cpu_ipc_scale": 1.15,
57
+ "ram_gib": 61.04,
58
+ "net_mbps": 4687.0,
59
+ "drive": {
60
+ "name": "ephem",
61
+ "size_gib": 1746,
62
+ "read_io_per_s": 200000,
63
+ "write_io_per_s": 110000,
64
+ "single_tenant": false,
65
+ "read_io_latency_ms": {
66
+ "low": 0.1,
67
+ "mid": 0.125,
68
+ "high": 0.17,
69
+ "confidence": 0.9,
70
+ "minimum_value": 0.05,
71
+ "maximum_value": 2.0
72
+ }
73
+ }
74
+ },
75
+ "i4i.4xlarge": {
76
+ "name": "i4i.4xlarge",
77
+ "cpu": 16,
78
+ "cpu_cores": 8,
79
+ "cpu_ghz": 3.5,
80
+ "cpu_ipc_scale": 1.15,
81
+ "ram_gib": 122.07,
82
+ "net_mbps": 9375.0,
83
+ "drive": {
84
+ "name": "ephem",
85
+ "size_gib": 3492,
86
+ "read_io_per_s": 400000,
87
+ "write_io_per_s": 220000,
88
+ "single_tenant": true,
89
+ "read_io_latency_ms": {
90
+ "low": 0.1,
91
+ "mid": 0.125,
92
+ "high": 0.17,
93
+ "confidence": 0.9,
94
+ "minimum_value": 0.05,
95
+ "maximum_value": 2.0
96
+ }
97
+ }
98
+ },
99
+ "i4i.8xlarge": {
100
+ "name": "i4i.8xlarge",
101
+ "cpu": 32,
102
+ "cpu_cores": 16,
103
+ "cpu_ghz": 3.5,
104
+ "cpu_ipc_scale": 1.15,
105
+ "ram_gib": 244.14,
106
+ "net_mbps": 18750.0,
107
+ "drive": {
108
+ "name": "ephem",
109
+ "size_gib": 6985,
110
+ "read_io_per_s": 800000,
111
+ "write_io_per_s": 440000,
112
+ "single_tenant": true,
113
+ "read_io_latency_ms": {
114
+ "low": 0.1,
115
+ "mid": 0.125,
116
+ "high": 0.17,
117
+ "confidence": 0.9,
118
+ "minimum_value": 0.05,
119
+ "maximum_value": 2.0
120
+ }
121
+ }
122
+ },
123
+ "i4i.12xlarge": {
124
+ "name": "i4i.12xlarge",
125
+ "cpu": 48,
126
+ "cpu_cores": 24,
127
+ "cpu_ghz": 3.5,
128
+ "cpu_ipc_scale": 1.15,
129
+ "ram_gib": 366.21,
130
+ "net_mbps": 28125.0,
131
+ "drive": {
132
+ "name": "ephem",
133
+ "size_gib": 10477,
134
+ "read_io_per_s": 1200000,
135
+ "write_io_per_s": 660000,
136
+ "single_tenant": true,
137
+ "read_io_latency_ms": {
138
+ "low": 0.1,
139
+ "mid": 0.125,
140
+ "high": 0.17,
141
+ "confidence": 0.9,
142
+ "minimum_value": 0.05,
143
+ "maximum_value": 2.0
144
+ }
145
+ }
146
+ },
147
+ "i4i.16xlarge": {
148
+ "name": "i4i.16xlarge",
149
+ "cpu": 64,
150
+ "cpu_cores": 32,
151
+ "cpu_ghz": 3.5,
152
+ "cpu_ipc_scale": 1.15,
153
+ "ram_gib": 488.28,
154
+ "net_mbps": 37500.0,
155
+ "drive": {
156
+ "name": "ephem",
157
+ "size_gib": 13970,
158
+ "read_io_per_s": 1600000,
159
+ "write_io_per_s": 880000,
160
+ "single_tenant": true,
161
+ "read_io_latency_ms": {
162
+ "low": 0.1,
163
+ "mid": 0.125,
164
+ "high": 0.17,
165
+ "confidence": 0.9,
166
+ "minimum_value": 0.05,
167
+ "maximum_value": 2.0
168
+ }
169
+ }
170
+ },
171
+ "i4i.24xlarge": {
172
+ "name": "i4i.24xlarge",
173
+ "cpu": 96,
174
+ "cpu_cores": 48,
175
+ "cpu_ghz": 3.5,
176
+ "cpu_ipc_scale": 1.15,
177
+ "ram_gib": 732.42,
178
+ "net_mbps": 56250.0,
179
+ "drive": {
180
+ "name": "ephem",
181
+ "size_gib": 20955,
182
+ "read_io_per_s": 2400000,
183
+ "write_io_per_s": 1320000,
184
+ "single_tenant": true,
185
+ "read_io_latency_ms": {
186
+ "low": 0.1,
187
+ "mid": 0.125,
188
+ "high": 0.17,
189
+ "confidence": 0.9,
190
+ "minimum_value": 0.05,
191
+ "maximum_value": 2.0
192
+ }
193
+ }
194
+ },
195
+ "i4i.32xlarge": {
196
+ "name": "i4i.32xlarge",
197
+ "cpu": 128,
198
+ "cpu_cores": 64,
199
+ "cpu_ghz": 3.5,
200
+ "cpu_ipc_scale": 1.15,
201
+ "ram_gib": 976.56,
202
+ "net_mbps": 75000.0,
203
+ "drive": {
204
+ "name": "ephem",
205
+ "size_gib": 27940,
206
+ "read_io_per_s": 3200000,
207
+ "write_io_per_s": 1760000,
208
+ "single_tenant": true,
209
+ "read_io_latency_ms": {
210
+ "low": 0.1,
211
+ "mid": 0.125,
212
+ "high": 0.17,
213
+ "confidence": 0.9,
214
+ "minimum_value": 0.05,
215
+ "maximum_value": 2.0
216
+ }
217
+ }
218
+ }
219
+ }
220
+ }
@@ -55,190 +55,6 @@
55
55
  "block_size_kib": 4, "single_tenant": true
56
56
  }
57
57
  },
58
- "i4i.large": {
59
- "name": "i4i.large",
60
- "cpu": 2,
61
- "cpu_ghz": 3.5,
62
- "cpu_ipc_scale": 1.15,
63
- "ram_gib": 15.48,
64
- "net_mbps": 781,
65
- "drive": {
66
- "name": "ephem", "size_gib": 436,
67
- "read_io_latency_ms": {
68
- "minimum_value":0.05,
69
- "low":0.10, "mid":0.125, "high":0.17,
70
- "maximum_value":2.05, "confidence":0.9
71
- },
72
- "read_io_per_s": 50000, "write_io_per_s": 27500,
73
- "block_size_kib": 4, "single_tenant": false
74
- }
75
- },
76
- "i4i.xlarge": {
77
- "name": "i4i.xlarge",
78
- "cpu": 4,
79
- "cpu_ghz": 3.5,
80
- "cpu_ipc_scale": 1.15,
81
- "ram_gib": 30.955,
82
- "net_mbps": 1875,
83
- "drive": {
84
- "name": "ephem", "size_gib": 873,
85
- "read_io_latency_ms": {
86
- "minimum_value": 0.05,
87
- "low": 0.10, "mid": 0.125, "high": 0.17,
88
- "maximum_value": 2.05, "confidence": 0.9
89
- },
90
- "read_io_per_s": 100000, "write_io_per_s": 55000,
91
- "block_size_kib": 4, "single_tenant": false
92
- }
93
- },
94
- "i4i.2xlarge": {
95
- "name": "i4i.2xlarge",
96
- "cpu": 8,
97
- "cpu_ghz": 3.5,
98
- "cpu_ipc_scale": 1.15,
99
- "ram_gib": 61.91,
100
- "net_mbps": 4687.5 ,
101
- "drive": {
102
- "name": "ephem", "size_gib": 1746,
103
- "read_io_latency_ms": {
104
- "minimum_value": 0.05,
105
- "low": 0.10, "mid": 0.125, "high": 0.17,
106
- "maximum_value": 2.05, "confidence": 0.9
107
- },
108
- "read_io_per_s": 200000, "write_io_per_s": 110000,
109
- "block_size_kib": 4, "single_tenant": true
110
- }
111
- },
112
- "i4i.4xlarge": {
113
- "name": "i4i.4xlarge",
114
- "cpu": 16,
115
- "cpu_ghz": 3.5,
116
- "cpu_ipc_scale": 1.15,
117
- "ram_gib": 123.82,
118
- "net_mbps": 9375,
119
- "drive": {
120
- "name": "ephem", "size_gib": 3492,
121
- "read_io_latency_ms": {
122
- "minimum_value":0.05,
123
- "low":0.10, "mid":0.125, "high":0.17,
124
- "maximum_value":2.05, "confidence":0.9
125
- },
126
- "read_io_per_s": 400000, "write_io_per_s": 220000,
127
- "block_size_kib": 4, "single_tenant": true
128
- }
129
- },
130
- "i4i.8xlarge": {
131
- "name": "i4i.8xlarge",
132
- "cpu": 32,
133
- "cpu_ghz": 3.5,
134
- "cpu_ipc_scale": 1.15,
135
- "ram_gib": 247.76,
136
- "net_mbps": 18750,
137
- "drive": {
138
- "name": "ephem", "size_gib": 6984,
139
- "read_io_latency_ms": {
140
- "minimum_value":0.05,
141
- "low":0.10, "mid":0.125, "high":0.17,
142
- "maximum_value":2.05, "confidence":0.9
143
- },
144
- "read_io_per_s": 800000, "write_io_per_s": 440000,
145
- "block_size_kib": 4, "single_tenant": true
146
- }
147
- },
148
- "i4i.16xlarge": {
149
- "name": "i4i.16xlarge",
150
- "cpu": 64,
151
- "cpu_ghz": 3.5,
152
- "cpu_ipc_scale": 1.15,
153
- "ram_gib": 495.82,
154
- "net_mbps": 35000,
155
- "drive": {
156
- "name": "ephem", "size_gib": 13968,
157
- "read_io_latency_ms": {
158
- "minimum_value":0.05,
159
- "low":0.10, "mid":0.125, "high":0.17,
160
- "maximum_value":2.05, "confidence":0.9
161
- },
162
- "read_io_per_s": 16000000, "write_io_per_s": 880000,
163
- "block_size_kib": 4, "single_tenant": true
164
- }
165
- },
166
-
167
- "i3en.large": {
168
- "name": "i3en.large",
169
- "cpu": 2,
170
- "cpu_ghz": 3.1,
171
- "ram_gib": 15.8,
172
- "net_mbps": 4000,
173
- "drive": {
174
- "name": "ephem", "size_gib": 1150,
175
- "read_io_latency_ms": {
176
- "minimum_value":0.07,
177
- "low":0.08, "mid":0.12, "high":0.20,
178
- "maximum_value":2, "confidence":0.9
179
- },
180
- "read_io_per_s": 42500, "write_io_per_s": 32500,
181
- "block_size_kib": 4, "single_tenant": false
182
- }
183
- },
184
- "i3en.xlarge": {
185
- "name": "i3en.xlarge",
186
- "cpu": 4,
187
- "cpu_ghz": 3.1,
188
- "ram_gib": 31.7,
189
- "net_mbps": 4000,
190
- "drive": {
191
- "name": "ephem", "size_gib": 2300,
192
- "read_io_latency_ms": {
193
- "minimum_value":0.07,
194
- "low":0.08, "mid":0.12, "high":0.20,
195
- "maximum_value":2, "confidence":0.9
196
- },
197
- "read_io_per_s": 85000, "write_io_per_s": 65000,
198
- "block_size_kib": 4, "single_tenant": false
199
- }
200
- },
201
- "i3en.2xlarge": {
202
- "name": "i3en.2xlarge",
203
- "cpu": 8,
204
- "cpu_ghz": 3.1,
205
- "ram_gib": 63.62,
206
- "net_mbps": 8000,
207
- "drive": {
208
- "name": "ephem", "size_gib": 4600,
209
- "read_io_latency_ms": {
210
- "minimum_value": 0.07,
211
- "low":0.08, "mid":0.12, "high": 0.20,
212
- "maximum_value":2, "confidence":0.9
213
- },
214
- "read_io_per_s": 170000, "write_io_per_s": 130000,
215
- "block_size_kib": 4, "single_tenant": false
216
- }
217
- },
218
- "i3en.3xlarge": {
219
- "name": "i3en.3xlarge",
220
- "cpu": 12,
221
- "cpu_ghz": 3.1,
222
- "ram_gib": 95.54,
223
- "net_mbps": 12000,
224
- "drive": {"name": "ephem", "size_gib": 6819,
225
- "read_io_latency_ms": {"minimum_value":0.07, "low":0.08, "mid":0.12, "high":0.16, "maximum_value":2, "confidence":0.9},
226
- "read_io_per_s": 250000, "write_io_per_s": 200000,
227
- "block_size_kib": 4, "single_tenant": true
228
- }
229
- },
230
- "i3en.6xlarge": {
231
- "name": "i3en.6xlarge",
232
- "cpu": 24,
233
- "cpu_ghz": 3.1,
234
- "ram_gib": 186.62,
235
- "net_mbps": 24000,
236
- "drive": {"name": "ephem", "size_gib": 14000,
237
- "read_io_latency_ms": {"minimum_value":0.07, "low":0.08, "mid":0.12, "high":0.16, "maximum_value":2, "confidence":0.9},
238
- "read_io_per_s": 500000, "write_io_per_s": 400000,
239
- "block_size_kib": 4, "single_tenant": true
240
- }
241
- },
242
58
  "m5d.large": {
243
59
  "name": "m5d.large",
244
60
  "cpu": 2,
@@ -264,14 +264,14 @@ class Drive(ExcludeUnsetModel):
264
264
  return max(self.block_size_kib, self.group_size_kib)
265
265
 
266
266
  @property
267
- def max_size_gib(self):
267
+ def max_size_gib(self) -> int:
268
268
  if self.max_scale_size_gib != 0:
269
269
  return self.max_scale_size_gib
270
270
  else:
271
271
  return self.size_gib
272
272
 
273
273
  @property
274
- def max_io_per_s(self):
274
+ def max_io_per_s(self) -> int:
275
275
  if self.max_scale_io_per_s != 0:
276
276
  return self.max_scale_io_per_s
277
277
  else:
@@ -779,23 +779,48 @@ class BufferComponent(str, Enum):
779
779
  compute = "compute"
780
780
  # [Data Shape] a.k.a. "Dataset" related buffers, e.g. Disk and Memory
781
781
  storage = "storage"
782
-
783
782
  # Resource specific component
784
783
  cpu = "cpu"
785
784
  network = "network"
786
785
  disk = "disk"
787
786
  memory = "memory"
788
787
 
788
+ @staticmethod
789
+ def is_generic(component: str) -> bool:
790
+ return component in {BufferComponent.compute, BufferComponent.storage}
791
+
792
+ @staticmethod
793
+ def is_specific(component: str) -> bool:
794
+ return not BufferComponent.is_generic(component)
795
+
789
796
 
790
797
  class BufferIntent(str, Enum):
791
798
  # Most buffers show "desired" buffer, this is the default
792
799
  desired = "desired"
793
800
  # ratio on top of existing buffers to ensure exists. Generally combined
794
801
  # with a different desired buffer to ensure we don't just scale needlessly
802
+ # This means we can scale up or down as as long as we meet the desired buffer.
795
803
  scale = "scale"
796
- # Ignore model preferences, just preserve existing buffers
804
+
805
+ # DEPRECATED: Use scale_up/scale_down instead
806
+ # Ignores model preferences, just preserve existing buffers
807
+ # We rarely actually want to do this since it can cause severe over provisioning
797
808
  preserve = "preserve"
798
809
 
810
+ # Scale up if necessary to meet the desired buffer.
811
+ # If the existing resource is over-provisioned, do not reduce the requirement.
812
+ # If under-provisioned, the requirement can be increased to meet the desired buffer.
813
+ # Example: need 20 cores but have 10 → scale up to 20 cores.
814
+ # Example 2: need 20 cores but have 40 → do not scale down and require at
815
+ # least 40 cores
816
+ scale_up = "scale_up"
817
+ # Scale down if necessary to meet the desired buffer.
818
+ # If the existing resource is under-provisioned, do not increase the requirement.
819
+ # If over-provisioned, the requirement can be decreased to meet the desired buffer.
820
+ # Example: need 20 cores but have 10 → maintain buffer and do not scale up.
821
+ # Example 2: need 20 cores but have 40 → scale down to 20 cores.
822
+ scale_down = "scale_down"
823
+
799
824
 
800
825
  class Buffer(ExcludeUnsetModel):
801
826
  # The value of the buffer expressed as a ratio over "normal" load e.g. 1.5x
@@ -819,7 +844,6 @@ class Buffers(ExcludeUnsetModel):
819
844
  "compute": Buffer(ratio: 1.5),
820
845
  }
821
846
  )
822
-
823
847
  And then models layer in their buffers, for example if a workload
824
848
  requires 10 CPU cores, but the operator of that workload likes to build in
825
849
  2x buffer for background work (20 cores provisioned), they would express that