2
2
* config_info.c - get/print the system configuration information of slurm
3
3
*****************************************************************************
4
4
* Copyright (C) 2002-2007 The Regents of the University of California.
5
* Copyright (C) 2008 Lawrence Livermore National Security.
5
* Copyright (C) 2008-2009 Lawrence Livermore National Security.
6
6
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
7
7
* Written by Morris Jette <jette1@llnl.gov> and Kevin Tew <tew1@llnl.gov>.
8
* CODE-OCEC-09-009. All rights reserved.
10
10
* This file is part of SLURM, a resource management program.
11
* For details, see <http://www.llnl.gov/linux/slurm/>.
11
* For details, see <https://computing.llnl.gov/linux/slurm/>.
12
* Please also read the included file: DISCLAIMER.
13
14
* SLURM is free software; you can redistribute it and/or modify it under
14
15
* the terms of the GNU General Public License as published by the Free
110
125
void slurm_print_ctl_conf ( FILE* out,
111
126
slurm_ctl_conf_info_msg_t * slurm_ctl_conf_ptr )
113
char time_str[32], tmp_str[128];
128
char time_str[32], tmp_str[128], *xbuf;
129
char *select_title = "";
131
select_title = "Bluegene/L configuration";
134
select_title = "Bluegene/P configuration";
137
select_title = "Bluegene/Q configuration";
115
139
if ( slurm_ctl_conf_ptr == NULL )
118
142
slurm_make_time_str ((time_t *)&slurm_ctl_conf_ptr->last_update,
119
143
time_str, sizeof(time_str));
120
144
fprintf(out, "Configuration data as of %s\n", time_str);
121
fprintf(out, "AccountingStorageEnforce = %u\n",
122
slurm_ctl_conf_ptr->accounting_storage_enforce);
145
fprintf(out, "AccountingStorageBackupHost = %s\n",
146
slurm_ctl_conf_ptr->accounting_storage_backup_host);
147
accounting_enforce_string(
148
slurm_ctl_conf_ptr->accounting_storage_enforce,
149
tmp_str, sizeof(tmp_str));
150
fprintf(out, "AccountingStorageEnforce = %s\n", tmp_str);
123
151
fprintf(out, "AccountingStorageHost = %s\n",
124
152
slurm_ctl_conf_ptr->accounting_storage_host);
125
153
fprintf(out, "AccountingStorageLoc = %s\n",
148
178
slurm_ctl_conf_ptr->checkpoint_type);
149
179
fprintf(out, "ClusterName = %s\n",
150
180
slurm_ctl_conf_ptr->cluster_name);
181
fprintf(out, "CompleteWait = %u sec\n",
182
slurm_ctl_conf_ptr->complete_wait);
151
183
fprintf(out, "ControlAddr = %s\n",
152
184
slurm_ctl_conf_ptr->control_addr);
153
185
fprintf(out, "ControlMachine = %s\n",
154
186
slurm_ctl_conf_ptr->control_machine);
155
187
fprintf(out, "CryptoType = %s\n",
156
188
slurm_ctl_conf_ptr->crypto_type);
190
xbuf = debug_flags2str(slurm_ctl_conf_ptr->debug_flags);
191
fprintf(out, "DebugFlags = %s\n", xbuf);
157
194
if (slurm_ctl_conf_ptr->def_mem_per_task & MEM_PER_CPU) {
158
fprintf(out, "DefMemPerCPU = %u\n",
195
fprintf(out, "DefMemPerCPU = %u MB\n",
159
196
slurm_ctl_conf_ptr->def_mem_per_task &
161
198
} else if (slurm_ctl_conf_ptr->def_mem_per_task) {
162
fprintf(out, "DefMemPerNode = %u\n",
199
fprintf(out, "DefMemPerNode = %u MB\n",
163
200
slurm_ctl_conf_ptr->def_mem_per_task);
165
202
fprintf(out, "DefMemPerCPU = UNLIMITED\n");
166
204
if (slurm_ctl_conf_ptr->disable_root_jobs)
167
205
fprintf(out, "DisableRootJobs = YES\n");
169
207
fprintf(out, "DisableRootJobs = NO\n");
171
/* Add in Slurm v1.4 */
172
209
if (slurm_ctl_conf_ptr->enforce_part_limits)
173
210
fprintf(out, "EnforcePartLimits = YES\n");
175
212
fprintf(out, "EnforcePartLimits = NO\n");
177
213
fprintf(out, "Epilog = %s\n",
178
214
slurm_ctl_conf_ptr->epilog);
179
fprintf(out, "EpilogMsgTime = %u\n",
215
fprintf(out, "EpilogMsgTime = %u usec\n",
180
216
slurm_ctl_conf_ptr->epilog_msg_time);
217
fprintf(out, "EpilogSlurmctld = %s\n",
218
slurm_ctl_conf_ptr->epilog_slurmctld);
181
219
fprintf(out, "FastSchedule = %u\n",
182
220
slurm_ctl_conf_ptr->fast_schedule);
183
221
fprintf(out, "FirstJobId = %u\n",
184
222
slurm_ctl_conf_ptr->first_job_id);
185
fprintf(out, "GetEnvTimeout = %u\n",
223
fprintf(out, "GetEnvTimeout = %u sec\n",
186
224
slurm_ctl_conf_ptr->get_env_timeout);
187
fprintf(out, "HealthCheckInterval = %u\n",
225
fprintf(out, "HealthCheckInterval = %u sec\n",
188
226
slurm_ctl_conf_ptr->health_check_interval);
189
227
fprintf(out, "HealthCheckProgram = %s\n",
190
228
slurm_ctl_conf_ptr->health_check_program);
192
230
fprintf(out, "HAVE_XCPU = %d\n", HAVE_XCPU);
194
fprintf(out, "InactiveLimit = %u\n",
232
fprintf(out, "InactiveLimit = %u sec\n",
195
233
slurm_ctl_conf_ptr->inactive_limit);
196
fprintf(out, "JobAcctGatherFrequency = %u\n",
234
fprintf(out, "JobAcctGatherFrequency = %u sec\n",
197
235
slurm_ctl_conf_ptr->job_acct_gather_freq);
198
236
fprintf(out, "JobAcctGatherType = %s\n",
199
237
slurm_ctl_conf_ptr->job_acct_gather_type);
238
fprintf(out, "JobCheckpointDir = %s\n",
239
slurm_ctl_conf_ptr->job_ckpt_dir);
200
240
fprintf(out, "JobCompHost = %s\n",
201
241
slurm_ctl_conf_ptr->job_comp_host);
202
242
fprintf(out, "JobCompLoc = %s\n",
226
268
fprintf(out, "MaxJobCount = %u\n",
227
269
slurm_ctl_conf_ptr->max_job_cnt);
228
270
if (slurm_ctl_conf_ptr->max_mem_per_task & MEM_PER_CPU) {
229
fprintf(out, "MaxMemPerCPU = %u\n",
271
fprintf(out, "MaxMemPerCPU = %u MB\n",
230
272
slurm_ctl_conf_ptr->max_mem_per_task &
232
274
} else if (slurm_ctl_conf_ptr->max_mem_per_task) {
233
fprintf(out, "MaxMemPerNode = %u\n",
275
fprintf(out, "MaxMemPerNode = %u MB\n",
234
276
slurm_ctl_conf_ptr->max_mem_per_task);
236
278
fprintf(out, "MaxMemPerCPU = UNLIMITED\n");
237
fprintf(out, "MessageTimeout = %u\n",
279
fprintf(out, "MessageTimeout = %u sec\n",
238
280
slurm_ctl_conf_ptr->msg_timeout);
239
fprintf(out, "MinJobAge = %u\n",
281
fprintf(out, "MinJobAge = %u sec\n",
240
282
slurm_ctl_conf_ptr->min_job_age);
241
283
fprintf(out, "MpiDefault = %s\n",
242
284
slurm_ctl_conf_ptr->mpi_default);
285
fprintf(out, "MpiParams = %s\n",
286
slurm_ctl_conf_ptr->mpi_params);
243
287
#ifdef MULTIPLE_SLURMD
244
288
fprintf(out, "MULTIPLE_SLURMD = %d\n", MULTIPLE_SLURMD);
246
290
fprintf(out, "NEXT_JOB_ID = %u\n",
247
291
slurm_ctl_conf_ptr->next_job_id);
292
if (slurm_ctl_conf_ptr->over_time_limit == (uint16_t) INFINITE)
293
fprintf(out, "OverTimeLimit = UNLIMITED\n");
295
fprintf(out, "OverTimeLimit = %u min\n",
296
slurm_ctl_conf_ptr->over_time_limit);
248
298
fprintf(out, "PluginDir = %s\n",
249
299
slurm_ctl_conf_ptr->plugindir);
250
300
fprintf(out, "PlugStackConfig = %s\n",
251
301
slurm_ctl_conf_ptr->plugstack);
303
if (strcmp(slurm_ctl_conf_ptr->priority_type, "priority/basic") == 0) {
304
fprintf(out, "PriorityType = %s\n",
305
slurm_ctl_conf_ptr->priority_type);
307
secs2time_str((time_t) slurm_ctl_conf_ptr->priority_decay_hl,
308
tmp_str, sizeof(tmp_str));
309
fprintf(out, "PriorityDecayHalfLife = %s\n", tmp_str);
310
fprintf(out, "PriorityFavorSmall = %u\n",
311
slurm_ctl_conf_ptr->priority_favor_small);
312
secs2time_str((time_t) slurm_ctl_conf_ptr->priority_max_age,
313
tmp_str, sizeof(tmp_str));
314
fprintf(out, "PriorityMaxAge = %s\n", tmp_str);
315
fprintf(out, "PriorityUsageResetPeriod = %s\n",
316
_reset_period_str(slurm_ctl_conf_ptr->
317
priority_reset_period));
318
fprintf(out, "PriorityType = %s\n",
319
slurm_ctl_conf_ptr->priority_type);
320
fprintf(out, "PriorityWeightAge = %u\n",
321
slurm_ctl_conf_ptr->priority_weight_age);
322
fprintf(out, "PriorityWeightFairShare = %u\n",
323
slurm_ctl_conf_ptr->priority_weight_fs);
324
fprintf(out, "PriorityWeightJobSize = %u\n",
325
slurm_ctl_conf_ptr->priority_weight_js);
326
fprintf(out, "PriorityWeightPartition = %u\n",
327
slurm_ctl_conf_ptr->priority_weight_part);
328
fprintf(out, "PriorityWeightQOS = %u\n",
329
slurm_ctl_conf_ptr->priority_weight_qos);
252
332
private_data_string(slurm_ctl_conf_ptr->private_data,
253
333
tmp_str, sizeof(tmp_str));
254
334
fprintf(out, "PrivateData = %s\n", tmp_str);
264
346
slurm_ctl_conf_ptr->propagate_rlimits_except);
265
347
fprintf(out, "ResumeProgram = %s\n",
266
348
slurm_ctl_conf_ptr->resume_program);
267
fprintf(out, "ResumeRate = %u\n",
349
fprintf(out, "ResumeRate = %u nodes/min\n",
268
350
slurm_ctl_conf_ptr->resume_rate);
351
fprintf(out, "ResumeTimeout = %u sec\n",
352
slurm_ctl_conf_ptr->resume_timeout);
353
if (slurm_ctl_conf_ptr->resv_over_run == (uint16_t) INFINITE)
354
fprintf(out, "ResvOverRun = UNLIMITED\n");
356
fprintf(out, "ResvOverRun = %u min\n",
357
slurm_ctl_conf_ptr->resv_over_run);
269
359
fprintf(out, "ReturnToService = %u\n",
270
360
slurm_ctl_conf_ptr->ret2service);
361
if (slurm_ctl_conf_ptr->salloc_default_command) {
362
fprintf(out, "SallocDefaultCommand = \"%s\"\n",
363
slurm_ctl_conf_ptr->salloc_default_command);
365
fprintf(out, "SallocDefaultCommand = %s\n",
366
slurm_ctl_conf_ptr->salloc_default_command);
271
368
fprintf(out, "SchedulerParameters = %s\n",
272
369
slurm_ctl_conf_ptr->sched_params);
273
370
fprintf(out, "SchedulerPort = %u\n",
274
371
slurm_ctl_conf_ptr->schedport);
275
372
fprintf(out, "SchedulerRootFilter = %u\n",
276
373
slurm_ctl_conf_ptr->schedrootfltr);
277
fprintf(out, "SchedulerTimeSlice = %u\n",
374
fprintf(out, "SchedulerTimeSlice = %u sec\n",
278
375
slurm_ctl_conf_ptr->sched_time_slice);
279
376
fprintf(out, "SchedulerType = %s\n",
280
377
slurm_ctl_conf_ptr->schedtype);
311
408
fprintf(out, "SlurmdSpoolDir = %s\n",
312
409
slurm_ctl_conf_ptr->slurmd_spooldir);
313
fprintf(out, "SlurmdTimeout = %u\n",
410
fprintf(out, "SlurmdTimeout = %u sec\n",
314
411
slurm_ctl_conf_ptr->slurmd_timeout);
315
fprintf(out, "SLURM_CONFIG_FILE = %s\n",
412
fprintf(out, "SlurmdUser = %s(%u)\n",
413
slurm_ctl_conf_ptr->slurmd_user_name,
414
slurm_ctl_conf_ptr->slurmd_user_id);
415
fprintf(out, "SLURM_CONF = %s\n",
316
416
slurm_ctl_conf_ptr->slurm_conf);
317
417
fprintf(out, "SLURM_VERSION = %s\n", SLURM_VERSION);
318
418
fprintf(out, "SrunEpilog = %s\n",
319
419
slurm_ctl_conf_ptr->srun_epilog);
420
fprintf(out, "SrunIOTimeout = %u sec\n",
421
slurm_ctl_conf_ptr->srun_io_timeout);
320
422
fprintf(out, "SrunProlog = %s\n",
321
423
slurm_ctl_conf_ptr->srun_prolog);
322
424
fprintf(out, "StateSaveLocation = %s\n",
327
429
slurm_ctl_conf_ptr->suspend_exc_parts);
328
430
fprintf(out, "SuspendProgram = %s\n",
329
431
slurm_ctl_conf_ptr->suspend_program);
330
fprintf(out, "SuspendRate = %u\n",
432
fprintf(out, "SuspendRate = %u nodes/min\n",
331
433
slurm_ctl_conf_ptr->suspend_rate);
332
fprintf(out, "SuspendTime = %d\n",
333
((int)slurm_ctl_conf_ptr->suspend_time - 1));
434
if (slurm_ctl_conf_ptr->suspend_time == 0) {
435
fprintf(out, "SuspendTime = NONE\n");
437
fprintf(out, "SuspendTime = %d sec\n",
438
((int)slurm_ctl_conf_ptr->suspend_time - 1));
440
fprintf(out, "SuspendTimeout = %u sec\n",
441
slurm_ctl_conf_ptr->suspend_timeout);
334
442
fprintf(out, "SwitchType = %s\n",
335
443
slurm_ctl_conf_ptr->switch_type);
336
444
fprintf(out, "TaskEpilog = %s\n",
337
445
slurm_ctl_conf_ptr->task_epilog);
338
446
fprintf(out, "TaskPlugin = %s\n",
339
447
slurm_ctl_conf_ptr->task_plugin);
340
fprintf(out, "TaskPluginParam = %s\n",
341
_task_plugin_param(slurm_ctl_conf_ptr->task_plugin_param));
448
slurm_sprint_cpu_bind_type(tmp_str,
449
slurm_ctl_conf_ptr->task_plugin_param);
450
fprintf(out, "TaskPluginParam = %s\n", tmp_str);
342
451
fprintf(out, "TaskProlog = %s\n",
343
452
slurm_ctl_conf_ptr->task_prolog);
344
453
fprintf(out, "TmpFS = %s\n",
345
454
slurm_ctl_conf_ptr->tmp_fs);
455
fprintf(out, "TopologyPlugin = %s\n",
456
slurm_ctl_conf_ptr->topology_plugin);
457
fprintf(out, "TrackWCKey = %u\n",
458
slurm_ctl_conf_ptr->track_wckey);
346
459
fprintf(out, "TreeWidth = %u\n",
347
460
slurm_ctl_conf_ptr->tree_width);
348
461
fprintf(out, "UsePam = %u\n",
349
462
slurm_ctl_conf_ptr->use_pam);
350
463
fprintf(out, "UnkillableStepProgram = %s\n",
351
464
slurm_ctl_conf_ptr->unkillable_program);
352
fprintf(out, "UnkillableStepTimeout = %u\n",
465
fprintf(out, "UnkillableStepTimeout = %u sec\n",
353
466
slurm_ctl_conf_ptr->unkillable_timeout);
354
fprintf(out, "WaitTime = %u\n",
467
fprintf(out, "WaitTime = %u sec\n",
355
468
slurm_ctl_conf_ptr->wait_time);
470
slurm_print_key_pairs(out, slurm_ctl_conf_ptr->select_conf_key_pairs,