Functional scheduling is a nonfeedback scheme for determining a job's importance. Functional scheduling associates a job with the submitting user, project, department, and job class. Functional scheduling is sometimes called priority scheduling. The functional policy setup ensures that a defined share is guaranteed to each user, project, or department at any time. Jobs of users, projects, or departments that have used fewer resources than anticipated are preferred when the system dispatches jobs to idle resources.
At the same time, full resource usage is guaranteed, because unused share proportions are distributed among those users, projects, and departments that need the resources. Past resource consumption is not taken into account.
Functional policy entitlement to system resources is combined with other entitlements in determining a job's net entitlement. For example, functional policy entitlement might be combined with share-based policy entitlement.
The total number of tickets that are allotted to the functional policy determines the weight of functional scheduling among the three scheduling policies. During installation, the administrator divides the total number of functional tickets among the functional categories of user, department, project, job, and job class.
Functional shares are assigned to every member of each functional category: user, department, project, job, and job class. These shares indicate what proportion of the tickets for a category each job associated with a member of the category is entitled to. For example, user davidson has 200 shares, and user donlee has 100. A job submitted by davidson is entitled to twice as many user-functional-tickets as donlee's job, no matter how many tickets there are.
The functional tickets that are allotted to each category are shared among all the jobs that are associated with a particular category.
At the bottom of the QMON Policy Configuration dialog box, click Functional Policy. The Functional Policy dialog box appears.
Select the functional category for which you are defining functional shares: user, project, department, or job.
The table under Functional Shares is scrollable. The table displays the following information:
A list of the members of the category currently selected from the Function Category list.
The number of functional shares for each member of the category. Shares are used as a convenient indication of the relative importance of each member of the functional category. You can edit this field.
The percentage of the functional share allocation for this category of functional ticket that this number of functional shares represents. This field is a feedback device and is not editable.
QMON periodically updates the information displayed in the Functional Policy dialog box. Click Refresh to force the display to refresh immediately.
To save all node changes that you make, click Apply. To close the dialog box without saving changes, click Done.
Click the jagged arrow above the Functional Shares table to open a configuration dialog box.
For User functional shares, the User Configuration dialog box appears. Use the User tab to switch to the appropriate mode for changing the configuration of grid engine users. See Configuring User Objects With QMON.
For Department functional shares, the User Configuration dialog box appears. Use the Userset tab to switch to the appropriate mode for changing the configuration of departments that are represented as usersets. See Defining Usersets As Projects and Departments.
For Project functional shares, the Project Configuration dialog box appears. See Defining Projects With QMON.
For Job functional shares, the Job Control dialog box appears. See Monitoring and Controlling Jobs With QMON in Sun N1 Grid Engine 6.1 User’s Guide.
To display the Ratio Between Sorts Of Functional Tickets, click the arrow at the right of the Functional Shares table .
User [%], Department [%], Project [%], Job [%] and Job Class [%] always add up to 100%.
When you change any of the sliders, all other unlocked sliders change to compensate for the change.
When a lock is open, the slider that it guards can change freely. The slider can change either because it is moved or because the moving of another slider causes this slider to change. When a lock is closed, the slider that it guards cannot change. If four locks are closed and one lock is open, no sliders can change.
User slider – Indicates the percentage of the total functional tickets to allocate to the users category
Departments slider – Indicates the percentage of the total functional tickets to allocate to the departments category
Project slider – Indicates the percentage of the total functional tickets to allocate to the projects category
Job slider – Indicates the percentage of the total functional tickets to allocate to the jobs category
You can assign functional shares to jobs only using QMON. No command-line interface is available for this function.
To configure the functional share policy from the command line, use the qconf command with the appropriate options.
Use the qconf -muser command to configure the user category. The -muser option modifies the fshare parameter of the user entry file. See the user(5) man page for information about the user entry file.
Use the qconf -mu command to configure the department category. The -mu option modifies the fshare parameter of the access list file. See the access_list(5) man page for information about the access list file, which is used to represent departments.
Use the qconf -mprj command to configure the project category. The -mprj option modifies the fshare parameter of the project entry file. See the project(5) man page for information about the project entry file.
Use the qconf -mq command to configure the job class category. The -mq option modifies the fshare parameter of the queue configuration file. See the queue_conf(5) man page for information about the queue configuration file, which is used to represent job classes.
The weighting between different categories is defined in the scheduler configuration sched_conf and can be changed using qconf -msconf. The parameters to change are weight_user, weight_department, weight_project, weight_job, and weight_jobclass. The parameter values range between 0 and 1, and the total sum of parameters must add up to 1.
Use this setup to create a certain share assignment of all the resources in the cluster to different users, projects, or departments. First-come, first-served scheduling is used among jobs of the same user, project, or department.
In the Scheduler Configuration dialog box, select the Share Functional Tickets check box.
See Sharing Functional Ticket Shares, and the sched_conf(5) man page.
Specify the number of functional tickets (for example, 1000000) in the scheduler configuration.
See Configuring Policy-Based Resource Management With QMON, and the sched_conf(5) man page.
Add scheduling-relevant items:
Add one user for each scheduling-relevant user.
See Configuring User Objects With QMON, and the user(5) man page.
Add one project for each scheduling-relevant project.
See Defining Projects With QMON, and the project(5) man page.
Add each scheduling-relevant department.
Assign functional shares to each user, project, or department.
See Configuring User Access Lists With QMON, and the access_list(5) man page.
Assign the shares as a percentage of the whole. Examples follow:
For users:
UserA (10)
UserB (20)
UserC (20)
UserD (20)
For projects:
ProjectA (55)
ProjectB (45)
For departments:
DepartmentA (90)
DepartmentB (5)
DepartmentC (5)