| | 1 | = Prioritizing jobs in a multi-user project = |
| | 2 | |
| | 3 | By default, BOINC processes jobs in a roughly first-in, first-out order. |
| | 4 | If your project has multiple job submitters, |
| | 5 | this is probably not what you want: |
| | 6 | users who submits lots of jobs would get more than their share of the project's capacity. |
| | 7 | BOINC has a set of mechanisms that address this issue. |
| | 8 | To use them, do the following: |
| | 9 | |
| | 10 | == Set the desired quotas for job submitters == |
| | 11 | |
| | 12 | Create a user account for each job submitter, |
| | 13 | and [MultiUser set their quotas]. |
| | 14 | |
| | 15 | == Modify your job submission scripts or work generators == |
| | 16 | |
| | 17 | Wherever you create jobs - e.g. [RemoteJobs web scripts for remote job submission] |
| | 18 | and [WorkGeneration work generators] - you must set the priority of the jobs |
| | 19 | as follows: |
| | 20 | |
| | 21 | * Compute the total FLOP estimate (workunit.rsc_fpops_est) |
| | 22 | of the set of jobs. |
| | 23 | * Run '''adjust_user_priority''' to update and return the priority |
| | 24 | of the submitter: |
| | 25 | {{{ |
| | 26 | adjust_user_priority --user userID --flops X --app appname |
| | 27 | }}} |
| | 28 | For example, in PHP: |
| | 29 | {{{ |
| | 30 | $cmd = "cd ../../bin; ./adjust_user_priority --user $user->id --flops $flops --app $app->name"; |
| | 31 | $x = system($cmd); |
| | 32 | if (!is_numeric($x) || (double)$x == 0) { |
| | 33 | ... handle error |
| | 34 | } |
| | 35 | $priority = (double)$x; |
| | 36 | }}} |
| | 37 | |
| | 38 | * Set job priorities. For example, use the '''--priority''' option to '''create_work'''. |
| | 39 | Also, if you're creating a batch, set batch.logical_end_time to the priority |
| | 40 | (this is not used for scheduling, but is used in displaying batches on the web). |
| | 41 | |
| | 42 | == Use the right feeder options == |
| | 43 | |
| | 44 | Run the feeder with the '''--priority_asc''' option. |
| | 45 | |
| | 46 | Note: currently this can't be used in combination with the --all_apps option, |
| | 47 | or with homogeneous redundancy. |