You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -17,7 +15,7 @@ particular `NnfDataMovementProfile` (or the default). The second is done per the
17
15
which allows for some configuration on a per-case basis, but is limited in scope. Both methods are
18
16
meant to work in tandem.
19
17
20
-
###Data Movement Profiles
18
+
## Data Movement Profiles
21
19
22
20
The server side configuration is controlled by creating `NnfDataMovementProfiles` resources in
23
21
Kubernetes. These work similar to `NnfStorageProfiles`. See [here](../storage-profiles/readme.md)
@@ -30,7 +28,7 @@ referring to the following resources:
30
28
-[Sample](https://github.com/NearNodeFlash/nnf-sos/blob/master/config/samples/nnf_v1alpha1_nnfdatamovementprofile.yaml) for `NnfDataMovementProfile`
31
29
-[Online Examples](https://github.com/NearNodeFlash/nnf-sos/blob/master/config/examples/nnf_v1alpha1_nnfdatamovementprofile.yaml) for `NnfDataMovementProfile`
32
30
33
-
###Copy Offload API Daemon
31
+
## Copy Offload API Daemon
34
32
35
33
The `CreateRequest` API call that is used to create Data Movement with the Copy Offload API has some
36
34
options to allow a user to specify some options for that particular Data Movement operation. These
@@ -47,7 +45,7 @@ daemon in the case where the WLM will run it only on demand.
47
45
See the [DataMovementCreateRequest API](copy-offload-api.html#datamovement.DataMovementCreateRequest)
48
46
definition for what can be configured.
49
47
50
-
###SELinux and Data Movement
48
+
## SELinux and Data Movement
51
49
52
50
Careful consideration must be taken when enabling SELinux on compute nodes. Doing so will result in
53
51
SELinux Extended File Attributes (xattrs) being placed on files created by applications running on
@@ -62,7 +60,7 @@ option.
62
60
See the [`dcp` documentation](https://mpifileutils.readthedocs.io/en/latest/dcp.1.html) for more
63
61
information.
64
62
65
-
###`sshd` Configuration for Data Movement Workers
63
+
## `sshd` Configuration for Data Movement Workers
66
64
67
65
The `nnf-dm-worker-*` pods run `sshd` in order to listen for `mpirun` jobs to perform data movement.
68
66
The number of simultaneous connections is limited via the sshd configuration (i.e. `MaxStartups`).
@@ -72,3 +70,82 @@ start rejecting connections once the limit is reached.
72
70
73
71
The `sshd_config` is stored in the `nnf-dm-worker-config``ConfigMap` so that it can be changed on
74
72
a running system without needing to roll new images. This also enables site-specific configuration.
73
+
74
+
## Enabling Core Dumps
75
+
76
+
### Mounting core dump Volumes
77
+
78
+
First, you must determine how your nodes handle core dumps. For example, if `systemd-coredump` is
79
+
used, then core dumps inside containers will be moved to the host node automatically. If that is
80
+
not the case, then a directory on the host nodes will need to be mounted into the Data Movement
81
+
containers. This directory will contain any core dumps collected by data movement operations, mainly
82
+
`mpirun` or `dcp`.
83
+
84
+
For Data Movement, the pods are running on two types of Kubernetes nodes:
85
+
86
+
-`nnf-dm-worker` pods on Rabbit nodes
87
+
-`nnf-dm-controller` pods on Kubernetes worker nodes
88
+
89
+
For all of these nodes, a core dump directory will need to be present and consistent across the
90
+
nodes. Once in place, we can then edit the Kubernetes configuration to mount this directory from
91
+
the host node to the containers using a [`hostPath`
then applies these patches to the correct resources.
107
+
108
+
### Editing the Data Movement Command
109
+
110
+
Once the volume is in place, the Data Movement command must be updated to first `cd` into this
111
+
directory. This ensures that the core dump is placed in that directory, making it accessible on the
112
+
host node.
113
+
114
+
To achieve this, update the Data Movement profiles in your gitops repository to include a preceding
115
+
`cd /localdisk/dumps && ...` in the `command` before the Data Movement command. For example, the default profile in `environments/<system>/nnf-sos/default-nnfdatamovementprofile.yaml` would look like the following:
Note that core patterns for containers are inherited from the host and that Linux containers do not
128
+
support a container-only core pattern without also affecting the host node. This is why we must use
129
+
a preceding `cd <dir>` in the Data Movement command.
130
+
131
+
### Data Movement Debug Images
132
+
133
+
To help with debugging symbols, it is a good idea to use the `debug` version of the two images used by the Data Movement containers:
134
+
135
+
- `nnf-mfu-debug`
136
+
- `nnf-dm-debug`
137
+
138
+
Both of these images include debugging symbols for [Open MPI](https://www.open-mpi.org/) and [mpiFileUtils](https://mpifileutils.readthedocs.io/en/v0.11.1/).
139
+
140
+
To use these images, edit the `environments/<system>/nnf-dm/kustomization.yaml` in your gitops repository and add the following:
141
+
142
+
```yaml
143
+
# Use images with mpifileutils/mpirun debug symbols
144
+
images:
145
+
- name: ghcr.io/nearnodeflash/nnf-dm
146
+
newName: ghcr.io/nearnodeflash/nnf-dm-debug
147
+
- name: ghcr.io/nearnodeflash/nnf-mfu
148
+
newName: ghcr.io/nearnodeflash/nnf-mfu-debug
149
+
```
150
+
151
+
This will override the default images and use the debug symbols instead.
0 commit comments