diff --git a/NEWS b/NEWS index 20c1e95e6db4681f16247921aa95f0bfa48e8949..014a400cb2fcb3805ff5c4ac2c1755c556d8ec39 100644 --- a/NEWS +++ b/NEWS @@ -241,6 +241,8 @@ documents those changes that are of interest to users and admins. * Changes in SLURM 1.1.33 ========================= + - sched/wiki - Do not wait for job completion before permitting + additional jobs to be scheduled. * Changes in SLURM 1.1.32 ========================= diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c index bc8d9c787f45816ac2b685043ab9984146399f1f..a538373f54b04f1299bc5b2d172c62d44d0fc4ef 100644 --- a/src/slurmctld/job_mgr.c +++ b/src/slurmctld/job_mgr.c @@ -2592,8 +2592,8 @@ static int _validate_job_desc(job_desc_msg_t * job_desc_msg, int allocate, * and sched/wiki2 */ if (!wiki_sched_test) { char *sched_type = slurm_get_sched_type(); - if ((strcmp(sched_type, "sched/wiki") == 0) || - (strcmp(sched_type, "sched/wiki2") == 0)) + if ((strcmp(sched_type, "sched/wiki") == 0) + || (strcmp(sched_type, "sched/wiki2") == 0)) wiki_sched = true; xfree(sched_type); wiki_sched_test = true; diff --git a/src/slurmctld/job_scheduler.c b/src/slurmctld/job_scheduler.c index 0585df88cc3e46db73d8021768321c81b40b476a..a56f8f99a90705ae12f68cfe068b30df53c7ba30 100644 --- a/src/slurmctld/job_scheduler.c +++ b/src/slurmctld/job_scheduler.c @@ -164,10 +164,24 @@ int schedule(void) char *ionodes = NULL; char tmp_char[256]; #endif + static bool wiki_sched = false; + static bool wiki_sched_test = false; + + /* don't bother trying to avoid fragmentation with sched/wiki */ + if (!wiki_sched_test) { + char *sched_type = slurm_get_sched_type(); + if ((strcmp(sched_type, "sched/wiki") == 0) + || (strcmp(sched_type, "sched/wiki2") == 0)) + wiki_sched = true; + xfree(sched_type); + wiki_sched_test = true; + } + lock_slurmctld(job_write_lock); /* Avoid resource fragmentation if important */ - if (switch_no_frag() && job_is_completing()) { + if ((!wiki_sched) && switch_no_frag() && job_is_completing()) { unlock_slurmctld(job_write_lock); + debug("schedule() returning, some job still completing"); return SLURM_SUCCESS; } debug("Running job scheduler");