Feeder Daemon
From Unofficial BOINC Wiki
[edit] General
This is a BOINC Server-Side Daemon Program program that fills up the Ready To Send Queue with Work Units ready to be sent. The Scheduler itself is too busy handling transaction with clients to do this task so the Feeder Daemon does this job.
This is a Daemon process that is run on the Database Server, or the Scheduling Server, that makes and maintains a direct connection to the BOINC Database. This isolates and connects the database to the CGI Programs that are run when a Participant makes a connection to "the Scheduler". The Scheduler is a CGI Script and if it was required to open an individual connection to the database our performance problems would be severe.
With an already established (instantiated) connection to the BOINC Database, the Feeder Daemon is contacted by each individual copy of the Scheduler script as each Participant makes their connection to the Scheduler. Overall system throughput is increased because separate connections to the Database Server would have to be made by each and every Scheduler that was created, and by using this established BOINC Server-Side Daemon Program this problem is avoided.
[edit] Development Notes
- By default, the Feeder Daemon gets Results in whatever order the Database returns them, which generally seems to be increasing Result ID value. It might get Results from one Application for a while, but eventually it would get Results from all Applications (however, this is not ideal because you'd go through long periods with only one kind of Result in shared memory).
- You can give the Feeder Daemon a -random flag, which causes it to get Results in order of the result.random field, which contains a random integer. This would do more or less what you want, and the fraction of Results of each Application would be proportional to the number of unsent Results for that Application. It has the major drawback that Results with low random numbers don't get sent for a long time, if ever.
- Note:
- To use this, you need to add an index on result.random, which is not there by default.

