Skip to content

BackendPrograms

Vitalii Koshura edited this page Apr 2, 2023 · 4 revisions

Job-processing daemons

The job-processing pipeline involves several other daemons that are application-independent: i.e., they're part of BOINC, and you don't have to modify them.

Feeder

This program is supplied by BOINC and is application independent. It creates a shared-memory segment used to pass database records to CGI scheduler processes. This data includes applications, application versions, and 'work items' (an unsent result and its corresponding workunit). It has the following command-line options:

-d N

Sets the verbosity level. 1=low ... 4=high.

--mod n i

Handle only results for which mod(id, n) = i. This lets you run the feeder on arbitrarily many machines.

--wmod n i

Handle only workunits for which mod(id, n) = i. This lets you run the feeder on arbitrarily many machines.

--random_order

Enumerate work items in order of increasing result.random

--random_order_db

Use rand(sysdate()) to order work items from the DB (only available in MySQL 5+)

--priority_order

Enumerate work items in order of decreasing priority.

--priority_order_create_time

Enumerate work items in order of decreasing priority, then increasing create time.

--priority_asc

Enumerate work items in order of increasing priority.

--sleep_interval N

Sleep N seconds if nothing to do

--allapps

Interleave work items from all applications. Weight applications according to the value of their 'weight' field; if all weights are zero, results are interleaved uniformly. Without this option, runnable results are enumerated in an indeterminate order, and there may be periods when only results from one application are available for sending.

--by_batch

Interleave work items uniformly across batches.

--purge_stale X

remove work items from the shared memory segment that have been there for longer than x minutes but haven't been assigned

--appids N1, N2, ...

Get work only for the given apps. Useful if your project uses both locality and job-cache scheduling. Can't be used in combination with -allapps, but you can get the same effect by using -allapps and assigning nonzero weights only to the apps you want.

If a user's project preferences include elements of the form <app_id>N</app_id> then the scheduler will send the user work only from those applications.

Transitioner

It handles state transitions of workunits and results. It generates initial results for workunits, and generates more results when timeouts or errors occur. Options:

--sleep_interval N

sleep N seconds if nothing to do (default 5)

--one_pass

do one pass, then exit

-d N

debug level N (1 .. 4 = most verbose)

--mod n i

process only workunits with (id mod n) == i

The transitioner works asynchronously from work generators and schedulers, and in high-load situations it can fall behind (i.e. a large queue of workunits waiting to be processed can build up). The transitioner backlog is shown in the server status page. If the backlog becomes large (> 1 hour) you can do the following:

  • stop the project
  • run sched/transitioner_catchup.php
  • start the project
Clone this wiki locally