This file describes changes in recent versions of SLURM. It primarily documents those changes that are of interest to users and admins. * Changes in SLURM 2.2.0.pre4 ============================= -- Add support for a PropagatePrioProcess configuration parameter value of 2 to restrict spawned task nice values to that of the slurmd daemon plus 1. This insures that the slurmd daemon always have a higher scheduling priority than spawned tasks. -- Add support in slurmctld, slurmd ans slurmdbd for option of "-n " to reset the daemon's nice value. -- Fixed slurm_load_slurmd_status and slurm_pid2jobid to work correctly when multiple slurmds are in use. -- Altered srun to set max_nodes to min_nodes if not set when doing an allocation to mimic that which salloc and sbatch do. If running a step if the max isn't set it remains unset. -- Applied patch from David Egolf (David.Egolf@Bull.com). Added the ability to purge/archive accounting data on a day or hour basis, previously it was only available on a monthly basis. -- Add support for maximum node count in job step request. -- Fix bug in CPU count logic for job step allocation (used count of CPUS per node rather than CPUs allocated to the job). -- Add new configuration parameters GroupUpdateForce and GroupUpdateTime. See "man slurm.conf" for details about how these control when slurmctld updates its information of which users are in the groups allowed to use partitions. -- Added sacctmgr list events which will list events that have happened on clusters in accounting. -- Permit a running job to shrink in size using a command of "scontrol update JobId=# NumNodes=#" or "scontrol update JobId=# NodeList=". Subsequent job steps must explicitly specify an appropriate node count to work properly. -- Added resize_time field to job record noting the time of the latest job size change (to be used for accounting purposes, which is under development). -- sview/smap now hides hidden partitions and their jobs by default, with an option to display them. * Changes in SLURM 2.2.0.pre3 ============================= -- Refine support for TotalView partial attach. Add parameter to configure program of "--enable-partial-attach". -- In select/cons_res, the count of CPUs on required nodes was formerly ignored in enforcing the maximum CPU limit. Also enforce maximum CPU limit when the topology/tree plugin is configured (previously ignored). -- In select/cons_res, allocate cores for a job using a best-fit approach. -- In select/cons_res, for jobs that can run on a single node, use a best-fit packing approach. -- Add support for new partition states of DRAIN and INACTIVE and new partition option of "Alternate" (alternate partition to use for jobs submitted to partitions that are currently in a state of DRAIN or INACTIVE). -- Add group membership cache. This can substantially speed up slurmctld startup or reconfiguration if many partitions have AllowGroups configured. -- Added slurmdb api for accessing slurm DB information. -- In select/linear: Modify data structures for better performance and to avoid underflow error messages when slurmctld restarts while jobs are in completing state. -- Added hash for slurm.conf so when nodes check in to the controller it can verify the slurm.conf is the same as the one it is running. If not an error message is displayed. To silence this message add NO_CONF_HASH to DebugFlags in your slurm.conf. -- Added error code ESLURM_CIRCULAR_DEPENDENCY and prevent circular job dependencies (e.g. job 12 dependent upon job 11 AND job 11 is dependent upon job 12). -- Add BootTime and SlurmdStartTime to available node information. -- Fixed moab_2_slurmdb to work correctly under new database schema. -- Slurmd will drain a compute node when the SlurmdSpoolDir is full. * Changes in SLURM 2.2.0.pre2 ============================= -- Add support for spank_get_item() to get S_STEP_ALLOC_CORES and S_STEP_ALLOC_MEM. Support will remain for S_JOB_ALLOC_CORES and S_JOB_ALLOC_MEM. -- Kill individual job steps that exceed their memory limit rather than killing an entire job if one step exceeds its memory limit. -- Added configuration parameter VSizeFactor to enforce virtual memory limits for jobs and job steps as a percentage of their real memory allocation. -- Add scontrol ability to update job step's time limits. -- Add scontrol ability to update job's NumCPUs count. -- Add --time-min options to salloc, sbatch and srun. The scontrol command has been modified to display and modify the new field. sched/backfill plugin has been changed to alter time limits of jobs with the --time-min option if doing so permits earlier job initiation. -- Add support for TotalView symbol MPIR_partial_attach_ok with srun support to release processes which TotalView does not attach to. -- Add new option for SelectTypeParameters of CR_ONE_TASK_PER_CORE. This option will allocate one task per core by default. Without this option, by default one task will be allocated per thread on nodes with more than one ThreadsPerCore configured. -- Avoid accounting separately for a current pid corresponds to a Light Weight Process (Thread POSIX) appearing in the /proc directory. Only account for the original process (pid==tgid) to avoid accounting for memory use more than once. -- Add proctrack/cgroup plugin which uses Linux control groups (aka cgroup) to track processes on Linux systems having this feature enabled (kernel >= 2.6.24). -- Add logging of license transations including job_id. -- Add configuration parameters SlurmSchedLogFile and SlurmSchedLogLevel to support writing scheduling events to a separate log file. -- Added contribs/web_apps/chart_stats.cgi, a web app that invokes sreport to retrieve from the accounting storage db a user's request for job usage or machine utilization statistics and charts the results to a browser. -- Massive change to the schema in the storage_accounting/mysql plugin. When starting the slurmdbd the process of conversion may take a few minutes. You might also see some errors such as 'error: mysql_query failed: 1206 The total number of locks exceeds the lock table size'. If you get this, do not worry, it is because your setting of innodb_buffer_pool_size in your my.cnf file is not set or set too low. A decent value there should be 64M or higher depending on the system you are running on. See RELEASE_NOTES for more information. But setting this and then restarting the mysqld and slurmdbd will put things right. After this change we have noticed 50-75% increase in performance with sreport and sacct. -- Fix for MaxCPUs to honor partitions of 1 node that have more than the maxcpus for a job. -- Add support for "scontrol notify " to work for batch jobs. * Changes in SLURM 2.2.0.pre1 ============================= -- Added RunTime field to scontrol show job report -- Added SLURM_VERSION_NUMBER and removed SLURM_API_VERSION from slurm/slurm.h. -- Added support to handle communication with SLURM 2.1 clusters. Job's should not be lost in the future when upgrading to higher versions of SLURM. -- Added withdeleted options for listing clusters, users, and accounts -- Remove PLPA task affinity functions due to that package being deprecated. -- Preserve current partition state information and node Feature and Weight information rather than use contents of slurm.conf file after slurmctld restart with -R option or SIGHUP. Replace information with contents of slurm.conf after slurmctld restart without -R or "scontrol reconfigure". See RELEASE_NOTES file fore more details. -- Modify SLURM's PMI library (for MPICH2) to properly execute an executable program stand-alone (single MPI task launched without srun). -- Made GrpCPUs and MaxCPUs limits work for select/cons_res. -- Moved all SQL dependant plugins into a seperate rpm slurm-sql. This should be needed only where a connection to a database is needed (i.e. where the slurmdbd is running) -- Add command line option "no_sys_info" to PAM module to supress system logging of "access granted for user ...", access denied and other errors will still be logged. -- sinfo -R now has the user and timestamp in separate fields from the reason. -- Much functionality has been added to account_storage/pgsql. The plugin is still in a very beta state. It is still highly advised to use the mysql plugin, but if you feel like living on the edge or just really like postgres over mysql for some reason here you go. (Work done primarily by Hongjia Cao, NUDT.) * Changes in SLURM 2.1.6 ======================== -- For newly submitted jobs, report expected start time in squeue --start as "N/A" rather than current time. -- Correct sched/backfill logic so that it runs in a more timely fashion. -- Fixed issue if running on accounting cache and priority/multifactor to initialize the root association when the database comes back up. -- Emulated BLUEGENE - fixed issue where blocks weren't always created correctly when loading from state. This does not apply to a real bluegene system, only emulated. -- Fixed bug when job is completing and its cpu_cnt would be calculated incorrectly, possibly resulting in an underflow being logged. -- Fixed bug where if there are pending jobs in a partition which was updated to have no nodes in it the slurmctld would dump core. -- Fixed smap and sview to display partitions with no nodes in them. -- Improve configure script's logic to detect LUA libraries. -- Fix bug that could cause slurmctld to abort if select/cons_res is used AND a job is submitted using the --no-kill option AND one of the job's nodes goes DOWN AND slurmctld restarts while that job is still running. -- In jobcomp plugins, job time limit was sometimes recorded improperly if not set by user (recorded huge number rather than partition's time limit). * Changes in SLURM 2.1.5 ======================== -- BLUEGENE - Fixed display of draining nodes for sinfo -R. -- Fixes to scontrol and sview when setting a job to an impossible start time. -- Added -h to srun for help. -- Fix for sacctmgr man page to remove erroneous 'with' statements. -- Fix for unpacking jobs with accounting statistics, previously it appears only steps were unpacked correctly, for the most case sacct would only display this information making this fix a very minor one. -- Changed scontrol and sview output for jobs with unknown end times from 'NONE' to 'Unknown'. -- Fixed mysql plugin to reset classification when adding a previously deleted cluster. -- Permit a batch script to reset umask and have that propagate to tasks spawed by subsequent srun. Previously the umask in effect when sbatch was executed was propagated to tasks spawed by srun. -- Modify slurm_job_cpus_allocated_on_node_id() and slurm_job_cpus_allocated_on_node() functions to not write explanation of failures to stderr. Only return -1 and set errno. -- Correction in configurator.html script. Prolog and Epilog were reversed. -- BLUEGENE - Fixed race condition where if a nodecard has an error on an un-booted block when a job comes to use it before the state checking thread notices it which could cause the slurmctld to lock up on a non-dynamic system. -- In select/cons_res with FastSchedule=0 and Procs=# defined for the node, but no specific socket/core/thread count configured, avoid fatal error if the number of cores on a node is less than the number of Procs configured. -- Added ability for the perlapi to utilize opaque data types returned from the C api. -- BLUEGENE - made the perlapi get correct values for cpus per node, Previously it would give the number of cpus per cnode instead of midplane. -- BLEUGENE - Fixed issue where if a block being selected for a job to use and during the process a hardware failure happens, previously the block would still be allowed to be used which would fail or requeue the job depending on the configuration. -- For SPANK job environment, avoid duplicate "SPANK_" prefix for environment set by sbatch jobs. -- Make squeue select jobs on hidden partitions when requesting more than one. -- Avoid automatically cancelling job steps when all of the tasks on some node have gracefully terminated. * Changes in SLURM 2.1.4 ======================== -- Fix for purge script in accounting to use correct options. -- If SelectType=select/linear and SelectTypeParameters=CR_Memory fix bug that would fail to release memory reserved for a job if "scontrol reconfigure" is executed while the job is in completing state. -- Fix bug in handling event trigger for job time limit while job is still in pending state. -- Fixed display of Ave/MaxCPU in sacct for jobs. Steps were printed correctly. -- When node current features differs from slurm.conf, log the node names using a hostlist expression rather than listing individual node names. -- Improve ability of srun to abort job step for some task launch failures. -- Fix mvapich plugin logic to release the created job allocation on initialization failure (previously the failures would cancel job step, but retain job allocation). -- Fix bug in srun for task count so large that it overflows int data type. -- Fix important bug in select/cons_res handling of ntasks-per-core parameter that was uncovered by a bug fixed in v2.1.3. Bug produced fatal error for slurmctld: "cons_res: cpus computation error". -- Fix bug in select/cons_res handling of partitions configured with Shared=YES. Prior logic failed to support running multiple jobs per node. * Changes in SLURM 2.1.3-2 ========================== -- Modified spec file to obsolete pam_slurm when installing the slurm-pam_slurm rpm. * Changes in SLURM 2.1.3-1 ========================== -- BLUEGENE - Fix issues on static/overlap systems where if a midplane was drained you would not be able to create new blocks on it. -- In sched/wiki2 (for Moab): Add excluded host list to job information using new keyword "EXCLUDE_HOSTLIST". -- Correct slurmd reporting of incorrect socket/core/thread counts. -- For sched/wiki2 (Moab): Do not extend a job's end time for suspend/resume or startup delay due to node boot time. A job's end time will always be its start time plus time limit. -- Added build-time option (to configure program) of --with-pam_dir to specify the directory into which PAM modules get installed, although it should pick the proper directory by default. "make install" and "rpmbuild" should now put the pam_slurm.so file in the proper directory. -- Modify PAM module to link against SLURM API shared library and use exported slurm_hostlist functions. -- Do not block new jobs with --immediate option while another job is in the process of being requeued (which can take a long time for some node failure modes). -- For topology/tree, log invalid hostnames in a single hostlist expression rather than one per line. -- A job step's default time limit will be UNLIMITED rather than partition's default time limit. The step will automatically be cancelled as part of the job termination logic when the job's time limit is reached. -- sacct - fixed bug when checking jobs against a reservation -- In select/cons_res, fix support for job allocation with --ntasks_per_node option. Previously could allocate too few CPUs on some nodes. -- Adjustment made to init message to the slurmdbd to allow backwards compatibility with future 2.2 release. YOU NEED TO UPGRADE SLURMDBD BEFORE ANYTHING ELSE. -- Fix accounting when comment of down/drained node has double quotes in it. * Changes in SLURM 2.1.2 ======================== -- Added nodelist to sview for jobs on non-bluegene systems -- Correction in value of batch job environment variable SLURM_TASKS_PER_NODE under some conditions. -- When a node silently fails which is already drained/down the reason for draining for the node is not changed. -- Srun will ignore SLURM_NNODES environment variable and use the count of currently allocated nodes if that count changes during the job's lifetime (e.g. job allocation uses the --no-kill option and a node goes DOWN, job step would previously always fail). -- Made it so sacctmgr can't add blank user or account. The MySQL plugin will also reject such requests. -- Revert libpmi.so version for compatibility with SLURM version 2.0 and earlier to avoid forcing applications using a specific libpmi.so version to rebuild unnecessarily (revert from libpmi.so.21.0.0 to libpmi.so.0.0.0). -- Restore support for a pending job's constraints (required node features) when slurmctld is restarted (internal structure needed to be rebuilt). -- Removed checkpoint_blcr.so from the plugin rpm in the slurm.spec since it is also in the blcr rpm. -- Fixed issue in sview where you were unable to edit the count of jobs to share resources. -- BLUEGENE - Fixed issue where tasks on steps weren't being displayed correctly with scontrol and sview. -- BLUEGENE - fixed wiki2 plugin to report correct task count for pending jobs. -- BLUEGENE - Added /etc/ld.so.conf.d/slurm.conf to point to the directory holding libsched_if64.so when building rpms. -- Adjust get_wckeys call in slurmdbd to allow operators to list wckeys. * Changes in SLURM 2.1.1 ======================== -- Fix for case sensitive databases when a slurmctld has a mixed case clustername to lower case the string to easy compares. -- Fix squeue if job is completing and failed to print remaining nodes instead of failed message. -- Fix sview core when searching for partitions by state. -- Fixed setting the start time when querying in sacct to the beginning of the day if not set previously. -- Defined slurm_free_reservation_info_msg and slurm_free_topo_info_msg in common/slurm_protocol_defs.h -- Avoid generating error when a job step includes a memory specification and memory is not configured as a consumable resource. -- Patch for small memory leak in src/common/plugstack.c -- Fix sview search on node state. -- Fix bug in which improperly formed job dependency specification can cause slurmctld to abort. -- Fixed issue where slurmctld wouldn't always get a message to send cluster information when registering for the first time with the slurmdbd. -- Add slurm_*_trigger.3 man pages for event trigger APIs. -- Fix bug in job preemption logic that would free allocated memory twice. -- Fix spelling issues (from Gennaro Oliva) -- Fix issue when changing parents of an account in accounting all childern weren't always sent to their respected slurmctlds until a restart. -- Restore support for srun/salloc/sbatch option --hint=nomultithread to bind tasks to cores rather than threads (broken in slurm v2.1.0-pre5). -- Fix issue where a 2.0 sacct could not talk correctly to a 2.1 slurmdbd. -- BLUEGENE - Fix issue where no partitions have any nodes assigned them to alert user no blocks can be created. -- BLUEGENE - Fix smap to put BGP images when using -Dc on a Blue Gene/P system. -- Set SLURM_SUBMIT_DIR environment variable for srun and salloc commands to match behavior of sbatch command. -- Report WorkDir from "scontrol show job" command for jobs launched using salloc and srun. -- Update correctly the wckey when changing it on a pending job. -- Set wckeyid correctly in accounting when cancelling a pending job. -- BLUEGENE - critical fix where jobs would be killed incorrectly. -- BLUEGENE - fix for sview putting multiple ionodes on to nodelists when viewing the jobs tab. * Changes in SLURM 2.1.0 ======================== -- Improve sview layout of blocks in use. -- A user can now change the dimensions of the grid in sview. -- BLUEGENE - improved startup speed further for large numbers of defined blocks -- Fix to _get_job_min_nodes() in wiki2/get_jobs.c suggested by Michal Novotny -- BLUEGENE - fixed issues when updating a pending job when a node count was incorrect for the asked for connection type. -- BLUEGENE - fixed issue when combining blocks that are in ready states to make a larger block from those or make multiple smaller blocks by splitting the larger block. Previously this would only work with block in a free state. -- Fix bug in wiki(2) plugins where if HostFormat=2 and the task list is greater than 64 we don't truncate. Previously this would mess up Moab by sending a truncated task list when doing a get jobs. -- Added update slurmctld debug level to sview when in admin mode. -- Added logic to make sure if enforcing a memory limit when using the jobacct_gather plugin a user can no longer turn off the logic to enforce the limit. -- Replaced many calls to getpwuid() with reentrant uid_to_string() -- The slurmstepd will now refresh it's log file handle on a reconfig, previously if a log was rolled any output from the stepd was lost. * Changes in SLURM 2.1.0-pre9 ============================= -- Added the "scontrol update SlurmctldDebug" as the preferred alternative to the "scontrol setdebug" command. -- BLUEGENE - made it so when removing a block in an error state the nodes in the block are set correctly in accounting as not in error. -- Fixed issue where if slurmdbd is not up qos' are set up correctly for associations off of cache. -- scontrol, squeue, sview all display the correct node, cpu count along with correct corresponding nodelist on completing jobs. -- Patch (Mark Grondona) fixes serious security vulnerability in SLURM in the spank_job_env functionality. -- Improve spank_job_env interface and documentation -- Add ESPANK_NOT_LOCAL error code to spank_err_t -- Made the #define DECAY_INTERVAL used in the priority/multifactor plugin a slurm.conf variable (PriorityCalcPeriod) -- Added new macro SLURM_VERSION for use in autoconf scripts to determine current version of slurm installed on system when building against the api. -- Patch from Matthieu Hautreux that adds an entry into the error file when a job or step receives a TERM or KILL signal. -- Make it so env var SLURM_SRUN_COMM_HOST is overwritten if already in existence in the slurmd. * Changes in SLURM 2.1.0-pre8 ============================= -- Rearranged the "scontrol show job" output into functional groupings -- Change the salloc/sbatch/srun -P option to -d (dependency) -- Removed the srun -d option; must use srun --slurmd-debug instead -- When running the mysql plugin natively MUNGE errors are now eliminated when sending updates to slurmctlds. -- Check to make sure we have a default account before looking to fill in default association. -- Accounting - Slurmctld and slurmdbd will now set uids of users which were created after the start of the daemons on reconfig. Slurmdbd will attempt to set previously non-existant uids every hour. -- Patch from Aaron Knister and Mark Grondona, to parse correctly quoted #SBATCH options in a batch script. -- job_desc_msg_t - in, out, err have been changed to std_in, std_out, and std_err respectfully. Needed for PySLURM, since Python sees (in) as a keyword. -- Changed the type of addr to struct sockaddr_in in _message_socket_accept() in sattach.c, step_launch.c, and allocate_msg.c, and moved the function into a common place for all the calls since the code was very similar. -- proctrack/lua support has been added see contribs/lua/protrack.lua -- replaced local gtk m4 test with AM_PATH_GTK_2_0 -- changed AC_CHECK_LIB to AC_SEARCH_LIBS to avoid extra libs in compile lines. -- Patch from Matthieu Hautreux to improve error message in slurmd/req.c -- Added support for split groups from (Matthiu Hautreux CEA) -- Patch from Mark Grondona to move blcr scripts into pkglibexecdir -- Patch from Doug Parisek to calculate a job's projected start time under the builtin scheduler. -- Removed most global variables out of src/common/jobacct_common.h * Changes in SLURM 2.1.0-pre7 ============================= -- BLUEGENE - make 2.1 run correctly on a real bluegene cluster -- sacctmgr - Display better debug for when an admin specifies a non-existant parent account when changing parent accounts. -- Added a mechanism to the slurmd to defer the epilog from starting until after a running prolog has finished. -- If a node reboots inbetween checking status the node is marked down unless ReturnToService=2 -- Added -R option to slurmctld to recover partition state also when restarting or reconfiguring. * Changes in SLURM 2.1.0-pre6 ============================= -- When getting information about nodes in hidden partitions, return a node name of NULL rather than returning no information about the node so that node index information is still valid. -- When querying database for jobs in certain state and a time period is given only jobs in that state during the period will be returned, previously if a time period was given in sacct jobs eligible to run or running would be displayed, which is still the default if no states are requested. -- One can now query jobs based on size (nodes and or cpus) (mysql plugin only) -- Applied patch from Mark Grondona that tests for a missing config file before any other processing in spank_init(). This now prevents fatal errors from being mistakenly treated as recoverable. -- --enable-debug no longer has to be stated at configure time to have the slurmctld or slurmstepd dump core on a seg fault. -- Moved the errant slurm_job_node_ready() declaration from job_info.h to slurm.h and deleted job_info.h. -- Added the slurm_job_cpus_allocated_on_node_id() slurm_job_cpus_allocated_on_node() API for working with the job_resources_t structure. -- BLUEGENE - speed up start up for systems that have many blocks (100+) configured on the system. * Changes in SLURM 2.1.0-pre5 ============================= -- Add squeue option "--start" to report expected start time of pending jobs. -- Sched/backfill plugin modified to set expected start time of pending jobs. -- Add SchedulerParameters option of "max_job_bf=#" to control how far down the queue of pending jobs that SLURM searches in an attempt backfill schedule them. The default value is 50 jobs. -- Fixed cause of squeue -o "%C" seg fault. -- Add -"-signal=@