From 9320a71f15bc446c7d5d5ff5bd8dbe65a1213cb0 Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Mon, 30 Jan 2006 18:09:40 +0000 Subject: [PATCH] Configuration parameter HeartBeatInterval is depracated. Now used half of SlurmdTimeout and SlurmctldTimeout for communications to slurmd and slurmctld daemons repsectively. --- NEWS | 3 +++ doc/html/big_sys.shtml | 12 +++++------- doc/html/configurator.html | 7 +------ doc/html/overview.shtml | 1 - doc/html/quickstart_admin.shtml | 1 - doc/man/man5/slurm.conf.5 | 22 +++++++++++++--------- etc/slurm.conf.example | 4 ---- slurm/slurm.h.in | 1 - src/api/config_info.c | 4 +--- src/common/read_config.c | 22 ++++------------------ src/common/read_config.h | 3 +-- src/common/slurm_protocol_api.c | 4 ++-- src/common/slurm_protocol_pack.c | 4 +--- src/slurmctld/backup.c | 7 ++++--- src/slurmctld/controller.c | 15 ++++++++------- src/slurmctld/ping_nodes.c | 12 ++++++++---- src/slurmctld/proc_req.c | 3 +-- 17 files changed, 52 insertions(+), 73 deletions(-) diff --git a/NEWS b/NEWS index 601c8bfa27a..02f73a95370 100644 --- a/NEWS +++ b/NEWS @@ -11,6 +11,9 @@ documents those changes that are of interest to users and admins. algorythm. Spawn and batch mode work the same as before. New slurm.conf variable SpanCount=50 is default. This is the number of threads per stop on the tree. + -- Configuration parameter HeartBeatInterval is depracated. Now used half + of SlurmdTimeout and SlurmctldTimeout for communications to slurmd and + slurmctld daemons repsectively. * Changes in SLURM 1.0.2 ======================== diff --git a/doc/html/big_sys.shtml b/doc/html/big_sys.shtml index 2d0f55e0c9e..ef9949cbea1 100644 --- a/doc/html/big_sys.shtml +++ b/doc/html/big_sys.shtml @@ -53,19 +53,17 @@ will both make for easier administration and better performance.</p> <h2>Timers</h2> -<p>The parameter <i>HeartBeatInterval</i> determines the interval +<p>The configuration parameter <i>SlurmdTimeout</i> determines the interval at which <i>slurmctld</i> routinely communicates with <i>slurmd</i>. +Communications occur at half the <i>SlurmdTimeout</i> value. The purpose of this is to determine when a compute node fails and thus should not be allocated work. Longer intervals decrease system noise on compute nodes (we do synchronize these requests across the cluster, but there will be some impact upon applications). -For really large clusters, <i>HeartBeatInterval</i> values of -60 seconds or more are reasonable. -The values of <i>SlurmctldTimeout</i> and <i>SlurmdTimeout</i> -may also need to be increased (say to double the value of -<i>HeartBeatInterval</i>).</p> +For really large clusters, <i>SlurmdTimeoutl</i> values of +120 seconds or more are reasonable.</p> -<p style="text-align:center;">Last modified 14 January 2006</p> +<p style="text-align:center;">Last modified 28 January 2006</p> <!--#include virtual="footer.txt"--> diff --git a/doc/html/configurator.html b/doc/html/configurator.html index 3983f5b4837..29d0cf1b1a9 100644 --- a/doc/html/configurator.html +++ b/doc/html/configurator.html @@ -1,5 +1,5 @@ <!-- -Copyright (C) 2005 The Regents of the University of California. +Copyright (C) 2005-2006 The Regents of the University of California. Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). Written by Morris Jette <jette1@llnl.gov> and Danny Auble <da@llnl.gov> UCRL-WEB-217616. @@ -95,7 +95,6 @@ function displayfile() "# TIMERS <br>" + "SlurmctldTimeout=" + document.config.slurmctld_timeout.value + "<br>" + "SlurmdTimeout=" + document.config.slurmd_timeout.value + "<br>" + - "HeartbeatInterval=" + document.config.heartbeat_interval.value + "<br>" + "InactiveLimit=" + document.config.inactive_limit.value + "<br>" + "MinJobAge=" + document.config.min_job_age.value + "<br>" + "KillWait=" + document.config.kill_wait.value + "<br>" + @@ -405,10 +404,6 @@ becoming the master controller <B>SlurmdTimeout</B>: How many seconds the SLURM controller waits for the slurmd to respond to a request before considering the node DOWN <P> -<input type="text" name="heartbeat_interval" value="60"> -<B>HeartbeatInterval</B>: How many seconds between SLURM controller attempts to -contace the slurmd daemons -<P> <input type="text" name="inactive_limit" value="0"> <B>InactiveLimit</B>: How many seconds the SLURM controller waits for srun commands to respond before considering the job or job step inactive and diff --git a/doc/html/overview.shtml b/doc/html/overview.shtml index 14c60712a75..8894161046a 100644 --- a/doc/html/overview.shtml +++ b/doc/html/overview.shtml @@ -117,7 +117,6 @@ BackupController=linux0002 # AuthType=auth/munge Epilog=/usr/local/slurm/sbin/epilog -HeartbeatInterval=60 PluginDir=/usr/local/slurm/lib Prolog=/usr/local/slurm/sbin/prolog SlurmctldPort=7002 diff --git a/doc/html/quickstart_admin.shtml b/doc/html/quickstart_admin.shtml index 74b0367c55c..f5c3f3676d5 100644 --- a/doc/html/quickstart_admin.shtml +++ b/doc/html/quickstart_admin.shtml @@ -500,7 +500,6 @@ ControlMachine = adevi Epilog = (null) FastSchedule = 1 FirstJobId = 1 -HeartbeatInterval = 60 InactiveLimit = 0 JobCompLoc = /var/tmp/jette/slurm.job.log JobCompType = jobcomp/filetxt diff --git a/doc/man/man5/slurm.conf.5 b/doc/man/man5/slurm.conf.5 index c87166d979a..7aeae249b31 100644 --- a/doc/man/man5/slurm.conf.5 +++ b/doc/man/man5/slurm.conf.5 @@ -1,4 +1,4 @@ -.TH "slurm.conf" "5" "January 2006" "slurm.conf 1.0" "Slurm configuration file" +.TH "slurm.conf" "5" "January 2006" "slurm.conf 1.1" "Slurm configuration file" .SH "NAME" slurm.conf \- Slurm configuration file .SH "DESCRIPTION" @@ -115,9 +115,9 @@ with a job id space which is disjoint from the interactive jobs. The default value is 1. .TP \fBHeartbeatInterval\fR -The interval, in seconds, at which the SLURM controller tests the -status of other daemons. The default value is 30 seconds. -May not exceed 65534. +Defunct paramter. +Interval of heartbeat for slurmd daemon is half of \fBSlurmdTimeout\fR. +Interval of heartbeat for slurmctld daemon is half of \fBSlurmctldTimeout\fR. .TP \fBInactiveLimit\fR The interval, in seconds, a job or job step is permitted to be inactive @@ -372,9 +372,9 @@ The default value is "/var/run/slurmctld.pid". \fBSlurmctldPort\fR The port number that the SLURM controller, \fBslurmctld\fR, listens to for work. The default value is SLURMCTLD_PORT as established at system -build time. NOTE: Either slurmctld and slurmd daemons must not execute -on the same nodes or the values of \fBSlurmctldPort\fR and \fBSlurmdPort\fR -must be different. +build time. NOTE: Either \fBslurmctld\fR and \fBslurmd\fR daemons must not +execute on the same nodes or the values of \fBSlurmctldPort\fR and +\fBSlurmdPort\fR must be different. .TP \fBSlurmctldTimeout\fR The interval, in seconds, that the backup controller waits for the @@ -421,8 +421,12 @@ different shared memory region and lose track of any running jobs. The interval, in seconds, that the SLURM controller waits for \fBslurmd\fR to respond before configuring that node's state to DOWN. The default value is 300 seconds. -A value of zero indicates the node should never be set DOWN if not responding. -May not exceed 65534. +A value of zero indicates the node will not be tested by \fBslurmctld\fR to +confirm the state of \fBslurmd\fR, the node will not be automatically set to +a DOWN state indicating a non-responsive \fBslurmd\fR, and some other tool +will take responsibility for monitoring the state of each compute node +and its \fBslurmd\fR daemon. +The value may not exceed 65534. .TP \fBStateSaveLocation\fR Fully qualified pathname of a directory into which the SLURM controller, diff --git a/etc/slurm.conf.example b/etc/slurm.conf.example index 658f5177e37..2721e1ce244 100644 --- a/etc/slurm.conf.example +++ b/etc/slurm.conf.example @@ -334,9 +334,6 @@ JobAcctType=jobacct/none # node's state to DOWN. If set to 0, this feature # is disabled. # -# "HeartbeatInterval": The interval, in seconds, at which the SLURM -# controller tests the status of other daemons. -# # "InactiveLimit" : The interval, in seconds, a job or job step is # permitted to be inactive (srun command not responding) # before being terminated. @@ -355,7 +352,6 @@ JobAcctType=jobacct/none # # SlurmctldTimeout=300 # Defaults to 300 seconds # SlurmdTimeout=300 # Defaults to 300 seconds -# HeartBeatInterval=30 # Defaults to 30 seconds # InactiveLimit=600 # Defaults to 0 (unlimited) # MinJobAge=30 # Defaults to 300 seconds # KillWait=10 # Defaults to 30 seconds diff --git a/slurm/slurm.h.in b/slurm/slurm.h.in index 23e27d108ae..b672decbdce 100644 --- a/slurm/slurm.h.in +++ b/slurm/slurm.h.in @@ -559,7 +559,6 @@ typedef struct slurm_ctl_conf { uint32_t first_job_id; /* first slurm generated job_id to assign */ uint16_t fast_schedule; /* 1 to *not* check configurations by node * (only check configuration file, faster) */ - uint16_t heartbeat_interval; /* interval between heartbeats, seconds */ uint16_t inactive_limit;/* seconds of inactivity before a * inactive resource allocation is released */ char *job_acct_loc; /* job accounting log location */ diff --git a/src/api/config_info.c b/src/api/config_info.c index 16da7ba5b98..ef12ce3fe32 100644 --- a/src/api/config_info.c +++ b/src/api/config_info.c @@ -2,7 +2,7 @@ * config_info.c - get/print the system configuration information of slurm * $Id$ ***************************************************************************** - * Copyright (C) 2002 The Regents of the University of California. + * Copyright (C) 2002-2006 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Morris Jette <jette1@llnl.gov> and Kevin Tew <tew1@llnl.gov>. * UCRL-CODE-217948. @@ -85,8 +85,6 @@ void slurm_print_ctl_conf ( FILE* out, slurm_ctl_conf_ptr->fast_schedule); fprintf(out, "FirstJobId = %u\n", slurm_ctl_conf_ptr->first_job_id); - fprintf(out, "HeartbeatInterval = %u\n", - slurm_ctl_conf_ptr->heartbeat_interval); fprintf(out, "InactiveLimit = %u\n", slurm_ctl_conf_ptr->inactive_limit); fprintf(out, "JobAcctLoc = %s\n", diff --git a/src/common/read_config.c b/src/common/read_config.c index aa08d89feec..7e72de7e406 100644 --- a/src/common/read_config.c +++ b/src/common/read_config.c @@ -3,7 +3,7 @@ * * $Id$ ***************************************************************************** - * Copyright (C) 2002 The Regents of the University of California. + * Copyright (C) 2002-2006 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Morris Jette <jette1@llnl.gov>. * UCRL-CODE-217948. @@ -363,7 +363,6 @@ init_slurm_conf (slurm_ctl_conf_t *ctl_conf_ptr) xfree (ctl_conf_ptr->epilog); ctl_conf_ptr->fast_schedule = (uint16_t) NO_VAL; ctl_conf_ptr->first_job_id = (uint32_t) NO_VAL; - ctl_conf_ptr->heartbeat_interval = (uint16_t) NO_VAL; ctl_conf_ptr->inactive_limit = (uint16_t) NO_VAL; xfree (ctl_conf_ptr->job_acct_loc); xfree (ctl_conf_ptr->job_acct_parameters); @@ -617,15 +616,8 @@ parse_config_spec (char *in_line, slurm_ctl_conf_t *ctl_conf_ptr) ctl_conf_ptr->first_job_id = first_job_id; } - if ( heartbeat_interval != -1) { - if ( ctl_conf_ptr->heartbeat_interval != (uint16_t) NO_VAL) - error (MULTIPLE_VALUE_MSG, "HeartbeatInterval"); - if ((heartbeat_interval < 0) || (heartbeat_interval > 0xffff)) - error("HeartbeatInterval=%ld is invalid", - heartbeat_interval); - else - ctl_conf_ptr->heartbeat_interval = heartbeat_interval; - } + if ( heartbeat_interval != -1) + error("HeartbeatInterval is defunct, see man slurm.conf"); if ( inactive_limit != -1) { if ( ctl_conf_ptr->inactive_limit != (uint16_t) NO_VAL) @@ -876,10 +868,7 @@ parse_config_spec (char *in_line, slurm_ctl_conf_t *ctl_conf_ptr) if ( slurmctld_debug != -1) { if ( ctl_conf_ptr->slurmctld_debug != (uint16_t) NO_VAL) error (MULTIPLE_VALUE_MSG, "SlurmctldDebug"); - if ((slurmctld_debug < 0) || (slurmctld_debug > 0xffff)) - error("SlurmctldDebug=%ld is invalid"); - else - ctl_conf_ptr->slurmctld_debug = slurmctld_debug; + ctl_conf_ptr->slurmctld_debug = slurmctld_debug; } if ( slurmctld_pidfile ) { @@ -1345,9 +1334,6 @@ validate_config (slurm_ctl_conf_t *ctl_conf_ptr) if (ctl_conf_ptr->first_job_id == (uint32_t) NO_VAL) ctl_conf_ptr->first_job_id = DEFAULT_FIRST_JOB_ID; - if (ctl_conf_ptr->heartbeat_interval == (uint16_t) NO_VAL) - ctl_conf_ptr->heartbeat_interval = DEFAULT_HEARTBEAT_INTERVAL; - if (ctl_conf_ptr->inactive_limit == (uint16_t) NO_VAL) ctl_conf_ptr->inactive_limit = DEFAULT_INACTIVE_LIMIT; diff --git a/src/common/read_config.h b/src/common/read_config.h index f3f8372f187..b0d335c64a0 100644 --- a/src/common/read_config.h +++ b/src/common/read_config.h @@ -4,7 +4,7 @@ * * $Id$ ***************************************************************************** - * Copyright (C) 2002 The Regents of the University of California. + * Copyright (C) 2002-2006 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Morris Mette <jette1@llnl.gov>. * UCRL-CODE-217948. @@ -35,7 +35,6 @@ #define DEFAULT_AUTH_TYPE "auth/none" #define DEFAULT_FAST_SCHEDULE 1 #define DEFAULT_FIRST_JOB_ID 1 -#define DEFAULT_HEARTBEAT_INTERVAL 60 /* NOTE: DEFAULT_INACTIVE_LIMIT must be 0 for Blue Gene/L systems */ #define DEFAULT_INACTIVE_LIMIT 0 #define DEFAULT_JOB_ACCT_LOC "/var/log/slurm_accounting.log" diff --git a/src/common/slurm_protocol_api.c b/src/common/slurm_protocol_api.c index 60906a1056b..a18794fea90 100644 --- a/src/common/slurm_protocol_api.c +++ b/src/common/slurm_protocol_api.c @@ -2,7 +2,7 @@ * slurm_protocol_api.c - high-level slurm communication functions * $Id$ ***************************************************************************** - * Copyright (C) 2002 The Regents of the University of California. + * Copyright (C) 2002-2006 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Kevin Tew <tew1@llnl.gov>, et. al. * UCRL-CODE-217948. @@ -1407,7 +1407,7 @@ int slurm_send_recv_controller_msg(slurm_msg_t *req, slurm_msg_t *resp) (slurmctld_conf.backup_controller) && (difftime(time(NULL), start_time) < (slurmctld_conf.slurmctld_timeout + - slurmctld_conf.heartbeat_interval))) { + (slurmctld_conf.slurmctld_timeout / 2)))) { debug("Neither primary nor backup controller " "responding, sleep and retry"); slurm_free_return_code_msg(resp->data); diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c index 6b65c7019f5..7164f93eb4e 100644 --- a/src/common/slurm_protocol_pack.c +++ b/src/common/slurm_protocol_pack.c @@ -3,7 +3,7 @@ * * $Id$ ***************************************************************************** - * Copyright (C) 2002 The Regents of the University of California. + * Copyright (C) 2002-2006 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Kevin Tew <tew1@llnl.gov>, et. al. * UCRL-CODE-217948. @@ -1951,7 +1951,6 @@ _pack_slurm_ctl_conf_msg(slurm_ctl_conf_info_msg_t * build_ptr, Buf buffer) packstr(build_ptr->epilog, buffer); pack16(build_ptr->fast_schedule, buffer); pack32(build_ptr->first_job_id, buffer); - pack16(build_ptr->heartbeat_interval, buffer); pack16(build_ptr->inactive_limit, buffer); packstr(build_ptr->job_acct_loc, buffer); packstr(build_ptr->job_acct_parameters, buffer); @@ -2032,7 +2031,6 @@ _unpack_slurm_ctl_conf_msg(slurm_ctl_conf_info_msg_t ** safe_unpackstr_xmalloc(&build_ptr->epilog, &uint16_tmp, buffer); safe_unpack16(&build_ptr->fast_schedule, buffer); safe_unpack32(&build_ptr->first_job_id, buffer); - safe_unpack16(&build_ptr->heartbeat_interval, buffer); safe_unpack16(&build_ptr->inactive_limit, buffer); safe_unpackstr_xmalloc(&build_ptr->job_acct_loc, &uint16_tmp, buffer); safe_unpackstr_xmalloc(&build_ptr->job_acct_parameters, &uint16_tmp, diff --git a/src/slurmctld/backup.c b/src/slurmctld/backup.c index a60dd4abd2a..d5473700635 100644 --- a/src/slurmctld/backup.c +++ b/src/slurmctld/backup.c @@ -1,7 +1,7 @@ /*****************************************************************************\ * backup.c - backup slurm controller ***************************************************************************** - * Copyright (C) 2002 The Regents of the University of California. + * Copyright (C) 2002-2006 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Morris Jette <jette@llnl.gov>, Kevin Tew <tew1@llnl.gov>, et. al. * UCRL-CODE-217948. @@ -109,8 +109,9 @@ void run_backup(void) while (slurmctld_config.shutdown_time == 0) { sleep(1); /* Lock of slurmctld_conf below not important */ - if (difftime(time(NULL), last_ping) < - slurmctld_conf.heartbeat_interval) + if (slurmctld_conf.slurmctld_timeout + && (difftime(time(NULL), last_ping) < + (slurmctld_conf.slurmctld_timeout / 2))) continue; last_ping = time(NULL); diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c index 45f3f0731c9..8f1828d27b1 100644 --- a/src/slurmctld/controller.c +++ b/src/slurmctld/controller.c @@ -701,6 +701,7 @@ static void *_slurmctld_background(void *no_data) static time_t last_timelimit_time; static time_t last_assert_primary_time; time_t now; + int ping_interval; /* Locks: Read config */ slurmctld_lock_t config_read_lock = { @@ -723,8 +724,11 @@ static void *_slurmctld_background(void *no_data) now = time(NULL); last_sched_time = last_checkpoint_time = last_group_time = now; last_timelimit_time = last_assert_primary_time = now; - last_ping_node_time = now + (time_t)MIN_CHECKIN_TIME - - (time_t)slurmctld_conf.heartbeat_interval; + if (slurmctld_conf.slurmd_timeout) + ping_interval = slurmctld_conf.slurmd_timeout / 2; + else + ping_interval = 60; + last_ping_node_time = now + (time_t)MIN_CHECKIN_TIME - ping_interval; last_ping_srun_time = now; (void) pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); (void) pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); @@ -762,12 +766,9 @@ static void *_slurmctld_background(void *no_data) unlock_slurmctld(job_write_lock); } - if (slurmctld_conf.heartbeat_interval && - (difftime(now, last_ping_node_time) >= - slurmctld_conf.heartbeat_interval) && - (is_ping_done())) { + if ((difftime(now, last_ping_node_time) >= ping_interval) + && (is_ping_done())) { last_ping_node_time = now; - debug2("Performing node ping"); lock_slurmctld(node_write_lock); ping_nodes(); unlock_slurmctld(node_write_lock); diff --git a/src/slurmctld/ping_nodes.c b/src/slurmctld/ping_nodes.c index 4bbce06a43d..cddd5bc2d94 100644 --- a/src/slurmctld/ping_nodes.c +++ b/src/slurmctld/ping_nodes.c @@ -2,7 +2,7 @@ * ping_nodes.c - ping the slurmd daemons to test if they respond * Note: there is a global node table (node_record_table_ptr) ***************************************************************************** - * Copyright (C) 2003 The Regents of the University of California. + * Copyright (C) 2003-2006 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Morris Jette <jette1@llnl.gov> et. al. * UCRL-CODE-217948. @@ -162,7 +162,7 @@ void ping_nodes (void) node_dead_time = (time_t) 0; else node_dead_time = last_ping_time - slurmctld_conf.slurmd_timeout; - still_live_time = now - slurmctld_conf.heartbeat_interval; + still_live_time = now - (slurmctld_conf.slurmd_timeout / 2); last_ping_time = now; offset += MAX_REG_THREADS; @@ -179,7 +179,11 @@ void ping_nodes (void) //info("need to ping %s",node_ptr->name); base_state = node_ptr->node_state & NODE_STATE_BASE; no_resp_flag = node_ptr->node_state & NODE_STATE_NO_RESPOND; - if ((node_ptr->last_response != (time_t)0) + if ((slurmctld_conf.slurmd_timeout == 0) + && (base_state != NODE_STATE_UNKNOWN)) + continue; + + if ((node_ptr->last_response != (time_t) 0) && (node_ptr->last_response <= node_dead_time) && (base_state != NODE_STATE_DOWN)) { if (down_hostlist) @@ -191,7 +195,7 @@ void ping_nodes (void) continue; } - if (node_ptr->last_response == (time_t)0) { + if (node_ptr->last_response == (time_t) 0) { no_resp_flag = 1; node_ptr->last_response = slurmctld_conf.last_update; } diff --git a/src/slurmctld/proc_req.c b/src/slurmctld/proc_req.c index a90363a867c..f9a815d1e0d 100644 --- a/src/slurmctld/proc_req.c +++ b/src/slurmctld/proc_req.c @@ -3,7 +3,7 @@ * * $Id$ ***************************************************************************** - * Copyright (C) 2002 The Regents of the University of California. + * Copyright (C) 2002-2006 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Morris Jette <jette@llnl.gov>, Kevin Tew <tew1@llnl.gov>, et. al. * UCRL-CODE-217948. @@ -291,7 +291,6 @@ void _fill_ctld_conf(slurm_ctl_conf_t * conf_ptr) conf_ptr->epilog = xstrdup(slurmctld_conf.epilog); conf_ptr->fast_schedule = slurmctld_conf.fast_schedule; conf_ptr->first_job_id = slurmctld_conf.first_job_id; - conf_ptr->heartbeat_interval = slurmctld_conf.heartbeat_interval; conf_ptr->inactive_limit = slurmctld_conf.inactive_limit; conf_ptr->job_acct_loc = xstrdup(slurmctld_conf.job_acct_loc); conf_ptr->job_acct_parameters = xstrdup(slurmctld_conf. -- GitLab