Thank you for the response,
My objective is to allow urgent jobs to requeue jobs running in all.q without
having jobs suspended (which consume resources).
Without the RQS, if all.q is full and an urgent job is submited, a job of all.q
is suspended, then it is requeue ( thanks to the checkpoint properties). But as
the queue instance of all.q has 1 slot free, a new "normal" job starts in the
queue, which is suspended, requeue, etc ...
To break this loop of "start, suspend, requeue", I use the RQS (which I think,
prevent oversubscription of the node only for all.q ?)
The number of slots declared in all.q is bigger than 12 because I saw in my
tests that this influences the limit above which the system begin to fail.
In my last test, I set it to 96, this has increased to 60 the limit below which
it works fine (I really don't know why).
To finish I tryed to increase it again but this has no more effect.
I found an intermediate solution which is to add of an RQS to limit the slots
of the urgent queue to 60. This works but I realy need to allow the urgent.q
queue to use all the slots of the cluster.
Here is the RQS definitions used :
limit queues {all.q} hosts {*} to slots=$num_proc
limit queues {urgent.q} hosts * to slots=60
-----Message d'origine-----
De : Reuti [mailto:[email protected]]
Envoyé : vendredi 25 avril 2014 00:31
À : HUMMEL Michel
Cc : [email protected]
Objet : Re: [gridengine users] slotwise preemption and requeue
Am 24.04.2014 um 09:22 schrieb HUMMEL Michel:
> Thank you for the hit (slotwise configured at 84 slots per node), but as you
> can see, preemption seem's to work (at less until you reach the 42 urgent
> jobs).
>
> I tryed with :
> subordinate_list slots=12(all.q:0:sr)
>
> And it gives me the exact same result, do you have any suggestion ?
Okay. Another thing that spot my eye:
> [@@ THALES GROUP INTERNAL @@]
>
>
> -----Message d'origine-----
> De : Reuti [mailto:[email protected]]
> Envoyé : mercredi 23 avril 2014 18:42
> À : HUMMEL Michel
> Cc : [email protected]
> Objet : Re: [gridengine users] slotwise preemption and requeue
>
> Hi,
>
> Am 23.04.2014 um 15:06 schrieb HUMMEL Michel:
>
>> I'm trying to configure my OGS to allow urgent priority jobs to requeue low
>> priority jobs.
>> It seem's to work for a limited number of urgent priority jobs but there is
>> an limit above which the system don't work as expected.
>> Here is the configuration I used :
>>
>> I have 7 nodes (named GSE1-7) of 12 slots each, which means 84 slots at all.
>>
>> I have 2 queues using slotwise preemption :
>> all.q and urgent.q (see configurations [1] and [2])
>>
>> To allow the requeue of jobs I have configured a checkpoint :
>> $ qconf -sckpt Requeue
>> ckpt_name Requeue
>> interface APPLICATION-LEVEL
>> ckpt_command
>> /data/module/install/OGS/2011.11p1/install/GE2011.11/kill_tree.sh \
>> $job_pid
>> migr_command
>> /data/module/install/OGS/2011.11p1/install/GE2011.11/kill_tree.sh \
>> $job_pid
>> restart_command NONE
>> clean_command NONE
>> ckpt_dir /tmp
>> signal NONE
>> when xsr
>>
>> I manage priority levels with complexes P1,p2, p3 for "normal jobs"
>> P0 for urgent jobs
>> $ qconf -sc
>> priority0 p0 BOOL == FORCED NO
>> FALSE 40
>> priority1 p1 BOOL == YES NO
>> FALSE 30
>> priority2 p2 BOOL == YES NO
>> FALSE 20
>> priority3 p3 BOOL == YES NO
>> FALSE 10
>>
>> To limit the number of jobs running concurrently on the to queues i used an
>> RQS on the all.q queue :
>> $ qconf -srqs
>> {
>> name limit_DCH
>> description NONE
>> enabled TRUE
>> limit queues {all.q} hosts {*} to slots=$num_proc
>> }
As you have 12 slots per queue instance in all.q, this RQS seems not to have
any effect I think.
>> I submit 110 "normal jobs" and 84 of them are executed, 12 on each node.
>>
>> for i in $(seq 1 110); do qsub -l p1 -ckpt Requeue job.sh; done qstat
>> | grep 'OGSE' | sort -k 8 | awk '{print $3 " " $8 }' | uniq -c
>> 12 job.sh all.q@OGSE1
>> 12 job.sh all.q@OGSE2
>> 12 job.sh all.q@OGSE3
>> 12 job.sh all.q@OGSE4
>> 12 job.sh all.q@OGSE5
>> 12 job.sh all.q@OGSE6
>> 12 job.sh all.q@OGSE7
>>
>> Then I submit 40 urgent jobs and it works as expected, the 40 are executed
>> in the urgent.q queue and 40 jobs of all.q are requeued (state Rq):
>> for i in $(seq 1 40); do qsub -l p0 job.sh; done (I grep OGSE on
>> the output to only catch jobs which are affected to a queue) qstat |
>> grep 'OGSE' | sort -k 8 | awk '{print $3 " " $8 }' | uniq -c
>> 8 job.sh all.q@OGSE2
>> 12 job.sh all.q@OGSE3
>> 12 job.sh all.q@OGSE5
>> 12 job.sh all.q@OGSE6
>> 12 job.sh urgent.q@OGSE1
>> 4 job.sh urgent.q@OGSE2
>> 12 job.sh urgent.q@OGSE4
>> 12 job.sh urgent.q@OGSE7
>> As you can see there is only 12 jobs running on each node.
>>
>> It works until i reach 42 urgent jobs (I've submited the others one by one
>> to find the exact limit).
>> When the 42th job starts then the requeue system doesn't work anymore and
>> OGS begin to suspend other "normal jobs" then migrates it on an other node,
>> the suspend another, ... and this as long as there is 42 or more urgent jobs
>> running or pending.
>> $ qsub -l p0 job.sh;
>> $ qsub -l p0 job.sh;
>> qstat | grep 'OGSE' | sort -k 8 | awk '{print $3 " " $8 }' | uniq -c
>> 12 job.sh all.q@OGSE1
>> 12 job.sh all.q@OGSE2
>> 11 job.sh all.q@OGSE3
>> 2 job.sh all.q@OGSE4
>> 11 job.sh all.q@OGSE5
>> 12 job.sh all.q@OGSE6
>> 12 job.sh urgent.q@OGSE1
>> 4 job.sh urgent.q@OGSE2
>> 1 job.sh urgent.q@OGSE3
>> 12 job.sh urgent.q@OGSE4
>> 1 job.sh urgent.q@OGSE5
>> 1 job.sh urgent.q@OGSE6
>> 12 job.sh urgent.q@OGSE7
>>
>> If I qdel one ugrent job, the system work again as expected, only 12 jobs
>> can run on each node and no jobs are in the suspended state.
>>
>> Is someone have an idea of what's going on ?
>> Any help will be appreciated
>>
>> Michel Hummel
>>
>> ------------------
>> [1]
>> $ qconf -sq all.q
>> qname all.q
>> hostlist OGSE1 OGSE2 OGSE3 OGSE4 OGSE5 OGSE6 OGSE7
>> seq_no 0
>> load_thresholds np_load_avg=1.75
>> suspend_thresholds NONE
>> nsuspend 1
>> suspend_interval 00:05:00
>> priority 0
>> min_cpu_interval INFINITY
>> processors UNDEFINED
>> qtype BATCH INTERACTIVE
>> ckpt_list Requeue
>> pe_list default distribute make
>> rerun TRUE
>> slots 84
This would be the number of slots per queue instance too. Maybe this was reason
you introduced the RQS?
-- Reuti
>> tmpdir /tmp
>> shell /bin/sh
>> prolog NONE
>> epilog NONE
>> shell_start_mode posix_compliant
>> starter_method NONE
>> suspend_method NONE
>> resume_method NONE
>> terminate_method NONE
>> notify 00:00:60
>> owner_list NONE
>> user_lists arusers
>> xuser_lists NONE
>> subordinate_list NONE
>> complex_values priority1=TRUE,priority2=TRUE,priority3=TRUE
>> projects NONE
>> xprojects NONE
>> calendar NONE
>> initial_state default
>> s_rt INFINITY
>> h_rt INFINITY
>> s_cpu INFINITY
>> h_cpu INFINITY
>> s_fsize INFINITY
>> h_fsize INFINITY
>> s_data INFINITY
>> h_data INFINITY
>> s_stack INFINITY
>> h_stack INFINITY
>> s_core INFINITY
>> h_core INFINITY
>> s_rss INFINITY
>> h_rss INFINITY
>> s_vmem INFINITY
>> h_vmem INFINITY
>>
>> [2]
>> $ qconf -sq urgent.q
>> qname urgent.q
>> hostlist @allhosts
>> seq_no 0
>> load_thresholds np_load_avg=1.75
>> suspend_thresholds NONE
>> nsuspend 1
>> suspend_interval 00:05:00
>> priority -20
>> min_cpu_interval INFINITY
>> processors UNDEFINED
>> qtype BATCH INTERACTIVE
>> ckpt_list Requeue
>> pe_list default make
>> rerun FALSE
>> slots 12
>> tmpdir /tmp
>> shell /bin/sh
>> prolog NONE
>> epilog NONE
>> shell_start_mode posix_compliant
>> starter_method NONE
>> suspend_method NONE
>> resume_method SIGINT
>> terminate_method NONE
>> notify 00:00:60
>> owner_list NONE
>> user_lists arusers
>> xuser_lists NONE
>> subordinate_list slots=84(all.q:0:sr)
>
> First one thought: this limit is per queue instance. So it should never
> trigger any suspension at all unless you reach > 84 per node.
>
> -- Reuti
>
>
>> complex_values priority0=True
>> projects NONE
>> xprojects NONE
>> calendar NONE
>> initial_state default
>> s_rt INFINITY
>> h_rt INFINITY
>> s_cpu INFINITY
>> h_cpu INFINITY
>> s_fsize INFINITY
>> h_fsize INFINITY
>> s_data INFINITY
>> h_data INFINITY
>> s_stack INFINITY
>> h_stack INFINITY
>> s_core INFINITY
>> h_core INFINITY
>> s_rss INFINITY
>> h_rss INFINITY
>> s_vmem INFINITY
>> h_vmem INFINITY
>>
>>
>>
>> _______________________________________________
>> users mailing list
>> [email protected]
>> https://gridengine.org/mailman/listinfo/users
>
>
_______________________________________________
users mailing list
[email protected]
https://gridengine.org/mailman/listinfo/users