There actually is a deadline policy and given you wrote the jobs approach a deadline it might be worth considering it. The job needs to be submitted as deadline job, however, and (out of the top of my head) the following conditions need to be met for it to work:

 * The user needs to be a member of a specific user group
   ('deadlineusers' if memory serves)
 * When submitting, the user needs to supply the so called 'deadline
   initiation time' (qsub -dl). That is the time when the job has to
   have reached its top priority so that it is considered safe to
   assume that the job will be scheduled prior to its real deadline
   given it has top priority since deadline initiation time (the jobs
   priority will increase linearly between submission and deadline
   initiation time and will stay at its maximum afterwards)
 * Appropriate policy weighting has to be set in the system. Search for
   'deadline' in sge_priority(5) and sched_conf(5) in this context.

In practice how you'd use that is to look at average run-time of your jobs clogging the system in front of a deadline job. Say those run for 2 hours and your deadline job needs to start by noon at the latest then you might want to set the deadline initiation time to 10am or even before. The job will have reached top priority by 10am that way and if any job finishes in the next two hours that frees up suitable resources for the deadline job then the deadline job should get scheduled (provided your deadline weight settings actually do make the deadline job the one with the highest priority in the system).

If you have a case where your deadline job is a resource consumptive job and the combination of several smaller jobs are in its way and tend to "jump the queue" then the deadline policy alone will not do the trick. You will need reservation working then as well. So all your jobs need to have a runtime limit (at least that is the case in the Grid Engine version you are using) and 'max_reservation' needs to be >0 in the scheduler config.

Hope this helps,

Fritz

Marlies Hankel schrieb:
Thanks everyone for the advice.

I have tried qalter -p <num> jobid and also qalter -ot <num> jobid but none of these gets the jobs onto the top of the queue. I can only get them a bit higher.

Maybe I have got the scheduler configuration wrong, so I am posting the configs here. I would like to have a fair share where past usage as well as time in the queue is taken into account.

I should also say that I see some high priority values in the queue, see below, which I have always wondered about if this is ok or not. In general the policy is working. High frequency users can fill up the cluster when it is empty and occasional or new users come at the top of the queue when they submit jobs.

Best wishes

Marlies

[root@queue ~]# qconf -ssconf
algorithm                         default
schedule_interval                 0:0:15
maxujobs                          0
queue_sort_method                 load
job_load_adjustments              np_load_avg=0.50
load_adjustment_decay_time        0:7:30
load_formula                      np_load_avg
schedd_job_info                   true
flush_submit_sec                  0
flush_finish_sec                  0
params                            none
reprioritize_interval             0:0:0
halftime                          168
usage_weight_list                 cpu=1.000000,mem=0.000000,io=0.000000
compensation_factor               5.000000
weight_user                       0.250000
weight_project                    0.250000
weight_department                 0.250000
weight_job                        0.250000
weight_tickets_functional         1000
weight_tickets_share              10000
share_override_tickets            TRUE
share_functional_shares           TRUE
max_functional_jobs_to_schedule   200
report_pjob_tickets               TRUE
max_pending_tasks_per_job         50
halflife_decay_list               none
policy_hierarchy                  OFS
weight_ticket                     100.000000
weight_waiting_time               50.000000
weight_deadline                   1000.000000
weight_urgency                    0.100000
weight_priority                   100.000000
max_reservation                   0
default_duration                  INFINITY

------------------------------------

[root@queue ~]# qconf -sstree
id=0
name=Root
type=0
shares=1
childnodes=1
id=1
name=default
type=0
shares=2000
childnodes=NONE

-------------------------------------

1203 150.00751 tbab_283k1 user1      qw    11/09/2015 13:24:21    40
1102 120.10001 as         user2    qw    10/28/2015 09:32:01    80
1103 105.10000 as         user2    qw    10/28/2015 09:33:09    80
1188 50.05451 as         user2    qw    11/03/2015 09:05:50    60
1189 50.05450 as         user2    qw    11/03/2015 09:06:27    60
1187 50.05450 as         user2    qw    11/03/2015 09:00:32    40
1195 50.03751 as         user2    qw    11/05/2015 14:52:45    80
1196 50.03749 as         user2    qw    11/05/2015 14:57:10    80
1200 50.00843 GCN4pore   user3    qw    11/09/2015 10:23:14    20
1201 50.00842 GCN4poreA1 user3    qw    11/09/2015 10:25:19    20
1202 50.00841 GCN4poreA2 user3    qw    11/09/2015 10:26:16    20
1204 50.00000 GCN4poreAR user3    qw    11/10/2015 13:00:13    20
1199 48.59359 GCN3pore1  user3    qw    11/09/2015 10:21:47    20


I want to have user2 jobs up the queue. jobs 1102 and 1103 have a priority of +1024a and override tickets of 500 for 1103 and 2000 for 1102.

---------------------------------------------------


On 11/10/2015 11:08 PM, Mark Dixon wrote:
On Tue, 10 Nov 2015, Marlies Hankel wrote:
...
We are using OGS/Grid Engine 2011.11. I have recently implemented a fair share policy which seems to work OK. However, on occasion, when a user comes up to a deadline I would like to advance them up the queue. Previously I could change their priority but this is now often not enough. At the moment past usage is taken into account as well as wait time.

Is there a way to put certain jobs on top of the queue when a fair share policy is implemented?
...

Hi,

In addition to the other methods suggested, the admin can add "override tickets" to particular jobs (qalter -ot <num>, I think), which should move them up the queue if there's an "O" in your policy hierarchy ("qconf -ssconf").

All the best,

Mark


--

UnivaFritz Ferstl | CTO and Business Development, EMEA
Univa Corporation <http://www.univa.com/> | The Data Center Optimization Company
E-Mail: [email protected] | Mobile: +49.170.819.7390





_______________________________________________
users mailing list
[email protected]
https://gridengine.org/mailman/listinfo/users

Reply via email to