wiki:MultiUserPriority

Prioritizing jobs in a multi-user project

By default, BOINC processes jobs in a roughly first-in, first-out order. If your project has multiple job submitters, this is probably not what you want: users who submits lots of jobs would get more than their share of the project's capacity. BOINC has a set of mechanisms that address this issue. To use them, do the following:

Set the desired quotas for job submitters

Create a user account for each job submitter, and set their quotas.

Modify your job submission scripts or work generators

Wherever you create jobs - e.g. web scripts for remote job submission and work generators - you must set the priority of the jobs as follows:

  • Compute the total FLOP estimate (workunit.rsc_fpops_est) of the set of jobs.
  • Run adjust_user_priority to update and return the priority of the submitter:
    adjust_user_priority --user userID --flops X --app appname
    
    For example, in PHP:
    $cmd = "cd ../../bin; ./adjust_user_priority --user $user->id --flops $flops --app $app->name";
    $x = system($cmd);
    if (!is_numeric($x) || (double)$x == 0) {
       ... handle error
    }
    $priority = (double)$x;
    
  • Set job priorities. For example, use the --priority option to create_work. Also, if you're creating a batch, set batch.logical_end_time to the priority (this is not used for scheduling, but is used in displaying batches on the web).

Prioritize existing jobs

If you have a lot of jobs already queued, you can prioritize them (and initialize user priorities) by running

html/ops/submit_init_priority.php

This script can also be used to reset all priorities to zero.

Use the right feeder options

Run the feeder with the --priority_asc option.

Notes:

  • Currently this can't be used in combination with the --all_apps option, or with homogeneous redundancy.
  • If there are any problems, remove the --priority_asc option and you'll be using FIFO again.
Last modified 5 years ago Last modified on 01/11/13 15:06:13