Draft - Draft - Grid Engine Enterprise Edition - policies and use cases - Draft - Draft |
The objective of this setup is to implement a strict hierarchy of job classes. Strict means that higher privileged jobs are started before less privileged jobs if appropriate resources are available. Jobs are submitted with -p <priority>. Scheduler uses jobs priority to derive per job functional share. The higher the jobs priority, the higher the functional share, the higher the number of resulting tickets.
HOWTO:
use SHARE_FUNCTIONAL_SHARES=0 in schedd_params section of global configuration sge_conf(5)
specify functional tickets (e.g. 1000000) in scheduler configuration sched_conf(5)
Remarks:
This setup can be used as substitution for the -p <priority> switch in SGE. If no other scheduling scheme is needed the use of SGE is recommended instead.
The objective of this setup is to implement a strict hierarchy of job classes. Strict means that jobs of higher privileged job classes are started before less priviledged jobs if appropriate resources are available. Jobs are submitted into a job class by submitting into a corresponding project
HOWTO:
use SHARE_FUNCTIONAL_SHARES=0 in schedd_params section of sge_conf(5)
specify functional tickets (e.g. 1000000) in scheduler configuration sched_conf(5)
add one project(5) for each scheduling relevant project
the hierarchy between different job classes is expressed by assigning different functional shares to each project
project_high (90)
project_medium (60)
project_low (30)
access to higher privileged projects can be controlled via project acl/xacl
The objective of this setup is a certain share assignment of all the resources combined in the SGEEE cluster to different users. FCFS scheduling is used among jobs of the same user.
HOWTO:
use SHARE_FUNCTIONAL_SHARES=1 in schedd_params section of global configuration sge_conf(5)
specify functional tickets (e.g. 1000000) in scheduler configuration sched_conf(5)
add one user(5) for each scheduling relevant user
assign functional shares to each project
userA (10)
userB (20)
userC (20)
userD (50)
The objective of this setup is a certain share assignment of all the resources combined in the SGEEE cluster to different projects. FCFS scheduling is used among jobs of the same project.
HOWTO:
use SHARE_FUNCTIONAL_SHARES=1 in schedd_params section of global configuration sge_conf(5)
specify functional tickets (e.g. 1000000) in scheduler configuration sched_conf(5)
add one project(5) for each scheduling relevant project
access to higher privileged projects can be controlled via project acl/xacl
assign functional shares to each project
projectA (55)
projectB (45)
The objective of this setup is a certain share assignment of all the resources combined in the SGEEE cluster to different departments. FCFS scheduling is used among jobs of the same department.
HOWTO:
use SHARE_FUNCTIONAL_SHARES=1 in schedd_params section of global configuration sge_conf(5)
specify functional tickets (e.g. 1000000) in scheduler configuration sched_conf(5)
add departments for each scheduling relevant department
assign functional shares to each department, e.g.
departmentA (90)
departmentB (5)
departmentC (5)
The objective of this setup is to guarantee over time a certain share assignment of all the resources combined in the SGEEE cluster to different projects. A FCFS scheduling is used among jobs of the same project.
HOWTO:
specify share tree tickets (e.g. 1000000) in scheduler configuration sched_conf(5)
add one project(5) for each scheduling relevant project
setup a share tree using qmon(1) reflecting the structure of all scheduling relevant projects as leafs
assign share tree shares to the projects
root ------ projectA (75) +--------- projectB (25)
The objective of this setup is to guarantee over time a certain share assignment of all the resources combined in the SGEEE cluster to different projects. An equal share is targeted among the jobs competing for resources within the same project.
HOWTO:
specify share tree tickets (e.g. 1000000) in scheduler configuration sched_conf(5)
add one user(5) for each scheduling relevant user
add one project(5) for each scheduling relevant project
setup a share tree using qmon(1) reflecting the structure of all scheduling relevant projects as nodes
assign share tree shares to the projects
root ------ projectA (75) ------- default (10) +--------- projectB (25) ------- default (10)
add the user "default" as leaf in the tree below each of these projects
The objective of this setup is to guarantee over time a certain share assignment of all the resources combined in the SGEEE cluster to different projects. Individual share assignments per user is needed.
HOWTO:
specify share tree tickets (e.g. 1000000) in scheduler configuration sched_conf(5)
add one user(5) for each scheduling relevant user
add one project(5) for each scheduling relevant project
setup a share tree using qmon(1) reflecting the structure of all scheduling relevant projects as nodes
assign share tree shares to the projects
add each user as leaf to the projects where they have access and assign individual shares
root ------ projectA (75) ------- user1 (5) | +----- user2 (90) | +----- user3 (5) +--------- projectB (25) ------- user4 (30) +----- user5 (30) +----- user6 (30)
Remarks:
If individual share assignment is required only for some few users the "default" user can be used in combination with individual users below a project node. I.e. the tree above can be condensed into
root ------ projectA (75) ------- default (5) | +----- user2 (90) +--------- projectB (25) ------- default (30)
There are cases in which it becomes necessary for the administrator to intervene manually, to break the automated policies (functional, share-tree) in order to prefer a certain group of jobs for some reason. In such cases the override policy is used by the administrator. One could throw in: "Why not simply changing the settings of the automated policy temporarily, if it's not appropriate?".
This is true at least for the functional policy. Not depending past usage, changes on the functional policy have an immediate effect on scheduling behavior. The share-tree policy however is significantly influenced by past usage. To effectuate an immediate, but temporary preferation of all jobs belonging to certain share-tree node entity (department, project, user) one had to make the scheduler "extrude past usage" temporarily. This appears to be quite circumstantial.
The override policy allows temporarily prefering those jobs by directly assigning override tickets, which is much more intuitive. Another benefit of using override tickets over the way of changing the automated policy is that it leaves the automated policy setup for long-term untouched.
There override policy can be used in two different variations. When the SHARE_OVERRIDE_TICKETS=false setting is used in the schedd_params section of sge_conf(5) the full ticket amount assigned to one of the object instances (user, department, project, job) is assigned to each corresponding single job, this is the default. When the SHARE_OVERRIDE_TICKETS=true setting is used these tickets are shared equally between all corresponding jobs.