1. 18 Jan, 2013 1 commit
    • Phil Eckert's avatar
      Permit job with invalid QOS to run if QOS set by administrator · 7aef4f80
      Phil Eckert authored
      About a year ago I submitted a modification that you incorporated
      into SLURM 2.4, which was to allow an admin to modify a job to use
      a QOS even though the user did not have access to the QOS.
      
      However, I must have tested it without having the Accounting set
      to enforce QOS's. So, if an admin modifies a job to a QOS they
      don't have access to, it will be modified, but the job will result
      in a state of InvalidQOS, which is reasonable, since this would
      handle the case where a user has their QOS removed. A problem,
      however, is that even though the scheduler won't schedule the job,
      backfill still will.
      
      One approach would be to fix backfill to be consistent with
      the scheduler (which should probably occur regardless), but
      my thought would be to modify the scheduler to allow the QOS
      as long as it was set by an admin, since that was the intent
      of the modification to begin with.
      
      I believe it  would only take a single line to change, just
      adding a check on the job_ptr->limit_set_qos, to make sure
      it was set by an admin:
      
                      if (job_ptr->qos_id) {
                              slurmdb_association_rec_t *assoc_ptr;
                              assoc_ptr = (slurmdb_association_rec_t *)job_ptr->assoc_ptr;
                              if (assoc_ptr &&
                                  !bit_test(assoc_ptr->usage->valid_qos,
                                            job_ptr->qos_id) &&
                                  !job_ptr->limit_set_qos) {
                                      info("sched: JobId=%u has invalid QOS",
                                              job_ptr->job_id);
                                      xfree(job_ptr->state_desc);
                                      job_ptr->state_reason = FAIL_QOS;
                                      continue;
                              } else if (job_ptr->state_reason == FAIL_QOS) {
                                      xfree(job_ptr->state_desc);
                                      job_ptr->state_reason = WAIT_NO_REASON;
                              }
                      }
      
      Phil
      7aef4f80
  2. 16 Jan, 2013 4 commits
  3. 15 Jan, 2013 1 commit
    • Matthieu Hautreux's avatar
      QoS limits enforcement: correct a bug with 0-valued per user used limits · 4136520d
      Matthieu Hautreux authored
      QoS limits enforcement on the controller side is based on a list of used_limits
      per user. When a user is not yet added to the list, which is common when the
      controller is restarted and the user has no running jobs, the current logic is
      to not check some of the "per user limits" and let the submission succeed.
      However, if one of these limits is a zero-valued limit, the check chould
      failed as it means that no job should be submitted at all as it would
      necessarily result in a crossing of the limit.
      
      This patch ensures that even when a user is not yet present in the per user
      used_limits list, the 0-valued limits are correctly treated.
      4136520d
  4. 14 Jan, 2013 1 commit
  5. 11 Jan, 2013 1 commit
  6. 10 Jan, 2013 2 commits
  7. 09 Jan, 2013 1 commit
  8. 08 Jan, 2013 2 commits
  9. 03 Jan, 2013 5 commits
  10. 28 Dec, 2012 1 commit
  11. 22 Dec, 2012 1 commit
  12. 21 Dec, 2012 1 commit
    • Morris Jette's avatar
      Correct job time limit for sched/backfil and job has QOS with NO_RESERVE flag · 4652e982
      Morris Jette authored
      If sched/backfill starts a job with a QOS having NO_RESERVE and not job
      time limit, start it with the partition time limit (or one year if the
      partition has no time limit) rather than NO_VAL (140 year time limit);
      
      If a standby job, which in this
      case has the NO_RESERVE flag set, is submitted
      without a time limit, and is backfilled, it
      will get an EndTime waaayyyy into the future.
      
      JobId=99 Name=cmdll
         UserId=eckert(1043) GroupId=eckert(1043)
         Priority=12083 Account=sa QOS=standby
         JobState=RUNNING Reason=None Dependency=(null)
         Requeue=1 Restarts=0 BatchFlag=1 ExitCode=0:0
         RunTime=00:00:14 TimeLimit=12:00:00 TimeMin=N/A
         SubmitTime=2012-12-20T11:49:36 EligibleTime=2012-12-20T11:49:36
         StartTime=2012-12-20T11:49:44 EndTime=2149-01-26T18:16:00
      
      so I looked at the code in /src/plugins/sched/backfill:
      
                      if (job_ptr->start_time <= now) {
                              int rc = _start_job(job_ptr, resv_bitmap);
                              if (qos_ptr && (qos_ptr->flags & QOS_FLAG_NO_RESERVE)){
                                      job_ptr->time_limit = orig_time_limit;
                                      job_ptr->end_time = job_ptr->start_time +
                                                          (orig_time_limit * 60);
      
      Using the debugger I found that if the job does not have a specified
      time limit, the job_ptr->time_limit is equal to NO_VAL when it hits
      this code.
      4652e982
  13. 20 Dec, 2012 2 commits
  14. 19 Dec, 2012 4 commits
  15. 17 Dec, 2012 2 commits
  16. 14 Dec, 2012 4 commits
  17. 13 Dec, 2012 3 commits
  18. 12 Dec, 2012 1 commit
  19. 07 Dec, 2012 1 commit
    • Morris Jette's avatar
      Correction to hostlist sorting · c8f97453
      Morris Jette authored
      Correction to hostlist sorting for hostnames that contain two numeric
      components and the first numeric component has various sizes (e.g.
      "rack9blade1" should come before "rack10blade1")
      c8f97453
  20. 06 Dec, 2012 1 commit
  21. 05 Dec, 2012 1 commit