slurmctld(8)

πŸ’– slurmctld β€” the central management daemon of Slurm, bestie edition πŸ’–

okay so. this page? it's slurmctld(8), from the Slurm Daemon manual fam, and it's literally the main character of your whole cluster. let's get into it 🫢


✨ NAME ✨

slurmctld β€” The central management daemon of Slurm.

🌸 SYNOPSIS 🌸

slurmctld [OPTIONS...]

πŸ‘‘ DESCRIPTION πŸ‘‘

slurmctld is THE central management daemon of Slurm. no cap. she monitors all the other Slurm daemons and resources, accepts work (aka jobs πŸ’…), and allocates resources to those jobs. iconic behaviour honestly.

and because her functionality is so critical, there may be a backup server ready to assume these functions if the primary server fails. it's giving understudy energy but make it high availability ✨


πŸŽ€ OPTIONS πŸŽ€

  • -c β€” Clear all previous slurmctld state from its last checkpoint. With this option, all jobs (both running AND queued) and all node states get deleted. Without it, previously running jobs will be preserved, along with node State of DOWN, DRAINED and DRAINING nodes and the associated Reason field for those nodes.
⚠️ NOTE: it is rare you would ever want to use this in production, because all jobs will be killed. bestie. ALL of them. 😭
  • -D β€” Run slurmctld in the foreground with logging copied to stderr. This limits the resilience of scontrol reconfigure and should be avoided in production. cute for debugging, not for the real world πŸ™ˆ
  • -f <file> β€” Read configuration from the specified file. See NOTES below.
  • -h β€” Help; print a brief summary of command options. the little "what do i do again" button πŸ₯°
  • -i β€” Ignore errors found while reading in state files on startup.
⚠️ Warning: using this option means losing the data that wasn't recovered from the state files. that data is GONE gone, fr fr.
  • -L <file> β€” Write log messages to the specified file.
  • -n <value> β€” Set the daemon's nice value to the specified value, typically a negative number.
  • -r β€” Recover partial state from last checkpoint: jobs and node DOWN/DRAIN state and reason information state. No partition state is recovered. This is the default action. the no-effort option, we love her πŸ¦‹
  • -R β€” Recover full state from last checkpoint: jobs, node, partition state, and power save settings. Without this option, previously running jobs will be preserved, along with node State of DOWN, DRAINED and DRAINING nodes and the associated Reason field for those nodes. No other node or partition state will be preserved. so like, the full-course meal version πŸ“
  • -s β€” Change working directory of slurmctld to SlurmctldLogFile path if possible, or to Slurm's StateSaveLocation otherwise. If both of them fail, it will fallback to /var/tmp. she's trying her best πŸ’€
  • --systemd β€” Use when starting the daemon with systemd. This will allow slurmctld to notify systemd of the new PID when using scontrol reconfigure.
⚠️ NOTE: The User and Group options in the slurmctld's systemd unit file need to both specify the SlurmUser. both of them. do not skip one. βœ‹
  • -v β€” Verbose operation. Multiple v's can be specified, with each v beyond the first increasing verbosity, up to 6 times (i.e. -vvvvvv). more v's, more tea β˜•
  • -V β€” Print version information and exit.

🌈 ENVIRONMENT VARIABLES 🌈

The following environment variables can be used to override settings compiled into slurmctld.

  • ABORT_ON_FATAL β€” When a fatal error is detected, use abort() instead of exit() to terminate the process. This allows backtraces to be captured without recompiling Slurm. forensic girlies rise πŸ•΅οΈ
  • SLURM_CONF β€” The location of the Slurm configuration file. This is overridden by explicitly naming a configuration file on the command line. (so -f wins, iykyk)
  • SLURM_DEBUG_FLAGS β€” Specify debug flags for the scheduler to use. See DebugFlags in the slurm.conf(5) man page for a full list of flags. The environment variable takes precedence over the setting in the slurm.conf.

🧚 HTTP server 🧚

Unless disabled via CommunicationParameters=disable_http in slurm.conf, slurmctld will accept incoming HTTP/1.1 compliant requests to any socket listening as configured by SlurmctldPort in slurm.conf. Authentication of HTTP requests is not supported. TLS wrapping is optionally supported without requiring TLSType in slurm.conf.

The following endpoints are currently supported:

  • GET / β€” Get list of endpoints.
  • GET /healthz β€” Test if slurmctld loaded successfully.
  • GET /livez β€” Test if slurmctld loaded successfully.
  • GET /readyz[?verbose] β€” Test if slurmctld is ready to accept incoming RPCs. Adding the verbose query parameter will result in a verbose output of each probe in the response.
  • GET /metrics/jobs β€” Get job metrics.
  • GET /metrics/nodes β€” Get node metrics.
  • GET /metrics/partitions β€” Get partition metrics.
  • GET /metrics/scheduler β€” Return scheduler metrics.
  • GET /metrics/jobs-users-accts β€” Return user and account job metrics.

When multiple SlurmctldHost entries are configured, a daemon in standby mode will answer GET /metrics* with HTTP 303 "See Other" with the Location header pointing to the same path and query on the first listed controller. If no such address is available, the response will be HTTP 503 "Service Unavailable" instead of a redirect. See SlurmctldHost in slurm.conf(5). she's redirecting you to her sister, respectfully πŸ’…

πŸ¦‹ CORE FILE LOCATION πŸ¦‹

  • If slurmctld is started with the -D option, the core file will be written to the current working directory.
  • Otherwise, if SlurmctldLogFile is a fully qualified path name (starting with a slash), the core file will be written to the same directory as the log file, provided SlurmUser has write permission on the directory.
  • Otherwise, the core file will be written to the StateSaveLocation, or "/var/tmp/" as a last resort.
  • If none of the above directories have write permission for SlurmUser, no core file will be produced. πŸ’€ nothing. nada. bye.

⭐ SIGNALS ⭐

  • SIGTERM SIGINT SIGQUIT β€” slurmctld will shutdown cleanly, saving its current state to the state save directory. a graceful queen πŸ‘‘
  • SIGABRT β€” slurmctld will shutdown cleanly, saving its current state, and perform a core dump.
  • SIGHUP β€” Reloads the slurm configuration files, similar to scontrol reconfigure.
  • SIGTSTP β€” Stop the process from a terminal. This also stops slurmscriptd.
  • SIGUSR2 β€” Reread the log level from the configs, and then reopen the log file. This should be used when setting up logrotate(8).
  • SIGPROF β€” Logs connection manager state when debug level is at least info.
  • SIGCHLD SIGUSR1 SIGXCPU SIGPIPE SIGALRM β€” These signals are explicitly ignored. not her problem, not her business πŸ™ˆ

πŸ’œ NOTES πŸ’œ

It may be useful to experiment with different slurmctld-specific configuration parameters using a distinct configuration file (e.g. timeouts). However, this special configuration file will not be used by the slurmd daemon or the Slurm programs, unless you specifically tell each of them to use it. you have to invite them individually, they don't just show up 🫢

If you desire changing communication ports, the location of the temporary file system, or other parameters used by other Slurm components, change the common configuration file, slurm.conf.

πŸ’– COPYING πŸ’–

Copyright (C) 2002-2007 The Regents of the University of California. Copyright (C) 2008-2010 Lawrence Livermore National Security. Copyright (C) 2010-2022 SchedMD LLC. Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). CODE-OCEC-09-009. All rights reserved.

This file is part of Slurm, a resource management program. For details, see <https://slurm.schedmd.com/>.

Slurm is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Slurm is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

🌟 SEE ALSO 🌟


and that's the whole page bestie, no skips, no crumbs left behind πŸ’…βœ¨ this was Slurm 26.05, from the Slurm Daemon manual set, and you can find slurmctld(8) right there in the same corner of the man pages. go run your cluster, you've got this πŸ«ΆπŸŽ€

πŸ“¦ where this page comes from