Skip to content

Commit 85ec1c0

Browse files
Merge pull request #174 from NearNodeFlash/lustre-layout
Add Lustre Layout documentation to Storage Profile
2 parents 3be97ac + 851f152 commit 85ec1c0

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

docs/guides/storage-profiles/readme.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,55 @@ data:
232232
[...]
233233
```
234234

235+
### Target Layout
236+
237+
Users may want Lustre file systems with different performance characteristics. For example, a user job with a single compute node accessing the Lustre file system would see acceptable performance from a single OSS. An FPP workload might want as many OSSs as posible to avoid contention.
238+
239+
The `NnfStorageProfile` allows admins to specify where and how many Lustre targets are allocated by the WLM. During the proposal phase of the workflow, the NNF software uses the information in the `NnfStorageProfile` to add extra constraints in the `DirectiveBreakdown`. The WLM uses these constraints when picking storage.
240+
241+
The `NnfStorageProfile` has three fields in the `mgtOptions`, `mdtOptions`, and `ostOptions` to specify target layout. The fields are:
242+
243+
- `count` - A static value for how many Lustre targets to create.
244+
- `scale` - A value from 1-10 that the WLM can use to determine how many Lustre targets to allocate. This is up to the WLM and the admins to agree on how to interpret this field. A value of 1 might indicate the minimum number of NNF nodes needed to reach the minimum capacity, while 10 might result in a Lustre target on every Rabbit attached to the computes in the job. Scale takes into account allocation size, compute node count, and Rabbit count.
245+
- `colocateComputes` - true/false value. When "true", this adds a location constraint in the `DirectiveBreakdown` that limits the WLM to picking storage with a physical connection to the compute resources. In practice this means that Rabbit storage is restricted to the chassis used by the job. This can be set individually for each of the Lustre target types. When this is "false", any Rabbit storage can be picked, even if the Rabbit doesn't share a chassis with any of the compute nodes in the job.
246+
247+
Only one of `scale` and `count` can be set for a particular target type.
248+
249+
The `DirectiveBreakdown` for `create_persistent` #DWs won't include the constraint from `colocateCompute=true` since there may not be any compute nodes associated with the job.
250+
251+
```yaml
252+
apiVersion: nnf.cray.hpe.com/v1alpha1
253+
kind: NnfStorageProfile
254+
metadata:
255+
name: high-metadata
256+
namespace: default
257+
data:
258+
default: false
259+
...
260+
lustreStorage:
261+
combinedMgtMdt: false
262+
capacityMdt: 500GiB
263+
capacityMgt: 1GiB
264+
[...]
265+
ostOptions:
266+
scale: 5
267+
colocateComputes: true
268+
mdtOptions:
269+
count: 10
270+
```
271+
272+
#### Example Layouts
273+
274+
`scale` with `colocateComputes=true` will likely be the most common layout type to use for `jobdw` directives. This will result in a Lustre file system whose performance scales with the number of compute nodes in the job.
275+
276+
`count` may be used when a specific performance characteristic is desired such as a single shared file workload that has low metadata requirements and only needs a single MDT. It may also be useful when a consistently performing file system is required across different jobs.
277+
278+
`colocatedComputes=false` may be useful for placing MDTs on NNF nodes without an OST (within the same file system).
279+
280+
The `count` field may be useful when creating a persistent file system since the job with the `create_persistent` directive may only have a single compute node.
281+
282+
In general, `scale` gives a simple way for users to get a filesystem that has performance consistent with their job size. `count` is useful for times when a user wants full control of the file system layout.
283+
235284
# Command Line Variables
236285

237286
## pvcreate

0 commit comments

Comments
 (0)