This source file includes following definitions.
- sstore_stage_register
- sstore_stage_open
- sstore_stage_close
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include "orte_config.h"
16 #include "opal/util/output.h"
17 #include "opal/util/opal_environ.h"
18 #include "orte/constants.h"
19
20 #include "orte/mca/sstore/sstore.h"
21 #include "orte/mca/sstore/base/base.h"
22 #include "sstore_stage.h"
23
24
25
26
27 const char *orte_sstore_stage_component_version_string =
28 "ORTE SSTORE stage MCA component version " ORTE_VERSION;
29
30
31
32
33 static int sstore_stage_register (void);
34 static int sstore_stage_open(void);
35 static int sstore_stage_close(void);
36
37
38
39
40
41 orte_sstore_stage_component_t mca_sstore_stage_component = {
42
43 {
44
45
46
47 .base_version = {
48 ORTE_SSTORE_BASE_VERSION_2_0_0,
49
50 .mca_component_name = "stage",
51 MCA_BASE_MAKE_VERSION(component, ORTE_MAJOR_VERSION, ORTE_MINOR_VERSION,
52 ORTE_RELEASE_VERSION),
53
54
55 .mca_open_component = sstore_stage_open,
56 .mca_close_component = sstore_stage_close,
57 .mca_query_component = orte_sstore_stage_component_query,
58 .mca_register_component_params = sstore_stage_register,
59 },
60 .base_data = {
61
62 MCA_BASE_METADATA_PARAM_CHECKPOINT
63 },
64
65 .verbose = 0,
66 .output_handle = -1,
67 },
68 };
69
70 char * orte_sstore_stage_local_snapshot_dir = NULL;
71 bool orte_sstore_stage_global_is_shared = false;
72 bool orte_sstore_stage_skip_filem = false;
73 bool orte_sstore_stage_enabled_caching = false;
74 bool orte_sstore_stage_enabled_compression = false;
75 int orte_sstore_stage_compress_delay = 0;
76 int orte_sstore_stage_progress_meter = 0;
77
78 static int sstore_stage_register(void)
79 {
80 mca_base_component_t *component = &mca_sstore_stage_component.super.base_version;
81 int ret;
82
83
84
85
86 orte_sstore_stage_local_snapshot_dir = strdup (opal_tmp_directory());
87 ret = mca_base_component_var_register(component, "local_snapshot_dir",
88 "The temporary base directory to use when storing local snapshots before they are moved.",
89 MCA_BASE_VAR_TYPE_STRING, NULL, 0, MCA_BASE_VAR_FLAG_INTERNAL,
90 OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY,
91 &orte_sstore_stage_local_snapshot_dir);
92
93 if (0 > ret) {
94 return ret;
95 }
96
97 ret = mca_base_var_register_synonym(ret, "orte", "crs", "base", "snapshot_dir",
98 MCA_BASE_VAR_SYN_FLAG_DEPRECATED);
99
100 if (0 > ret) {
101 return ret;
102 }
103
104
105
106
107
108 orte_sstore_stage_global_is_shared = false;
109 ret = mca_base_component_var_register(component, "global_is_shared",
110 "If the global_snapshot_dir is on a shared file system all nodes can access, "
111 "then the checkpoint files can be copied more efficiently when FileM is used."
112 " [Default = disabled]", MCA_BASE_VAR_TYPE_BOOL, NULL, 0, 0,
113 OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY,
114 &orte_sstore_stage_global_is_shared);
115
116 if (0 > ret) {
117 return ret;
118 }
119
120 ret = mca_base_var_register_synonym(ret, "orte", "snapc", "base", "global_shared",
121 MCA_BASE_VAR_SYN_FLAG_DEPRECATED);
122
123 if (0 > ret) {
124 return ret;
125 }
126
127
128
129
130
131 orte_sstore_stage_skip_filem = false;
132 ret = mca_base_component_var_register(component, "skip_filem",
133 "Not for general use! For debugging only! "
134 "Pretend to move files. [Default = disabled]",
135 MCA_BASE_VAR_TYPE_BOOL, NULL, 0, 0,
136 OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY,
137 &orte_sstore_stage_skip_filem);
138 if (0 > ret) {
139 return ret;
140 }
141
142 ret = mca_base_var_register_synonym(ret, "orte", "snapc", "base","skip_filem",
143 MCA_BASE_VAR_SYN_FLAG_DEPRECATED);
144
145 if (0 > ret) {
146 return ret;
147 }
148
149
150
151
152
153 orte_sstore_stage_enabled_caching = false;
154 ret = mca_base_component_var_register(component, "caching",
155 "Maintain a node local cache of last checkpoint. [Default = disabled]",
156 MCA_BASE_VAR_TYPE_BOOL, NULL, 0, 0,
157 OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY,
158 &orte_sstore_stage_enabled_caching);
159
160 if (0 > ret) {
161 return ret;
162 }
163
164
165
166
167 orte_sstore_stage_enabled_compression = false;
168 ret = mca_base_component_var_register(component, "compress",
169 "Compress local snapshots. [Default = disabled]",
170 MCA_BASE_VAR_TYPE_BOOL, NULL, 0, 0,
171 OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY,
172 &orte_sstore_stage_enabled_compression);
173
174 if (0 > ret) {
175 return ret;
176 }
177
178
179
180
181 orte_sstore_stage_compress_delay = 0;
182 ret = mca_base_component_var_register(component, "compress_delay",
183 "Seconds to delay the start of compression on sync() "
184 " [Default = 0]",
185 MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
186 OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY,
187 &orte_sstore_stage_compress_delay);
188
189 if (0 > ret) {
190 return ret;
191 }
192
193
194
195
196 orte_sstore_stage_progress_meter = 0;
197 ret = mca_base_component_var_register(component, "progress_meter",
198 "Display Progress every X percentage done. [Default = 0/off]",
199 MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
200 OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY,
201 &orte_sstore_stage_progress_meter);
202
203 if (0 > ret) {
204 return ret;
205 }
206
207 orte_sstore_stage_progress_meter = (orte_sstore_stage_progress_meter % 101);
208
209
210
211
212 mca_sstore_stage_component.super.priority = 10;
213 ret = mca_base_component_var_register(component, "priority", "Priority of the SSTORE stage component",
214 MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
215 OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY,
216 &mca_sstore_stage_component.super.priority);
217
218 if (0 > ret) {
219 return ret;
220 }
221
222
223
224
225 ret = mca_base_component_var_register(component, "verbose",
226 "Verbose level for the SSTORE stage component",
227 MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
228 OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY,
229 &mca_sstore_stage_component.super.verbose);
230
231 if (0 > ret) {
232 return ret;
233 }
234
235 return ORTE_SUCCESS;
236 }
237
238 static int sstore_stage_open(void)
239 {
240
241
242
243 if ( 0 != mca_sstore_stage_component.super.verbose) {
244 mca_sstore_stage_component.super.output_handle = opal_output_open(NULL);
245 opal_output_set_verbosity(mca_sstore_stage_component.super.output_handle,
246 mca_sstore_stage_component.super.verbose);
247 } else {
248 mca_sstore_stage_component.super.output_handle = orte_sstore_base_framework.framework_output;
249 }
250
251
252
253
254 opal_output_verbose(10, mca_sstore_stage_component.super.output_handle,
255 "sstore:stage: open()");
256 opal_output_verbose(20, mca_sstore_stage_component.super.output_handle,
257 "sstore:stage: open: priority = %d",
258 mca_sstore_stage_component.super.priority);
259 opal_output_verbose(20, mca_sstore_stage_component.super.output_handle,
260 "sstore:stage: open: verbosity = %d",
261 mca_sstore_stage_component.super.verbose);
262 opal_output_verbose(20, mca_sstore_stage_component.super.output_handle,
263 "sstore:stage: open: Local snapshot directory = %s",
264 orte_sstore_stage_local_snapshot_dir);
265 opal_output_verbose(20, mca_sstore_stage_component.super.output_handle,
266 "sstore:stage: open: Is Global dir. shared = %s",
267 (orte_sstore_stage_global_is_shared ? "True" : "False"));
268 opal_output_verbose(20, mca_sstore_stage_component.super.output_handle,
269 "sstore:stage: open: Node Local Caching = %s",
270 (orte_sstore_stage_enabled_caching ? "Enabled" : "Disabled"));
271 opal_output_verbose(20, mca_sstore_stage_component.super.output_handle,
272 "sstore:stage: open: Compression = %s",
273 (orte_sstore_stage_enabled_compression ? "Enabled" : "Disabled"));
274 opal_output_verbose(20, mca_sstore_stage_component.super.output_handle,
275 "sstore:stage: open: Compression Delay = %d",
276 orte_sstore_stage_compress_delay);
277 opal_output_verbose(20, mca_sstore_stage_component.super.output_handle,
278 "sstore:stage: open: Skip FileM (Debug Only) = %s",
279 (orte_sstore_stage_skip_filem ? "True" : "False"));
280
281 return ORTE_SUCCESS;
282 }
283
284 static int sstore_stage_close(void)
285 {
286 opal_output_verbose(10, mca_sstore_stage_component.super.output_handle,
287 "sstore:stage: close()");
288
289 return ORTE_SUCCESS;
290 }