wiki:BackendPrograms

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 result.priority
--priority_order_create_time
Enumerate work items in order of decreasing result.priority, then increasing workunit.id
--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
Last modified 3 years ago Last modified on 06/20/14 17:13:56