config.xml. Use the boolean tag <cache_md5_info> to enable it.
This prevents the work generation library from having to go back and
continuously regenerate the md5 sums of your input data files. Note
that reading these from disk can be expensive if you have many such files
that are large and that you re-use. See check-in notes from 30/31 Dec 2004
for some details.
svn path=/trunk/boinc/; revision=5281
no work was sent to hosts, and available space<0 OR if available space>0
but work was unfeasible because the disk bound requirements of the work
exceeded the available space.
Added a new config.xml boolean element called 'choose_download_url_by_timezone'
This requires that projects provide a 2-column file in the project root named
'download_servers'. An example is:
3600 http://einstein.aei.mpg.de
-21600 http://einstein.phys.uwm.edu
The first column is offset from UTC in seconds, and the second column is the URL
of the download server. When enabled, the scheduler will replace the download
path for data and executables by a list of download URLs, ordered by proximity
to the host's timezone. The download path must start with the
BOINC default download/ and the different download servers must have identical
file paths under download/, in other words they must be mirrored.
svn path=/trunk/boinc/; revision=5275
< 4.62 to be interchanged with their priority. So if the message was
supposed to be 'No work available' with priority 'low', the actual
svn path=/trunk/boinc/; revision=5273
disk space is < 0, delete files which have <sticky> and <report_on_rpc>
set. Note that (1) this deletion simply removes the <sticky> tag, so
file won't be deleted until after all WU that depend upon it are
completed and (2) the mechanism to determine which file to delete
could be improved. TODO: improve messages to hosts which have no file
space and ALSO have no files to delete.
- scheduler changes: locality scheduling. Clean up code which makes a
deterministic search of results to delete. Data files names can not
contain the "~" character!
- scheduler changes: added a simple debugging mechanism for scheduler
replies. If you touch a file named 'debug_sched' in the project
root, then files called sched_reply_HOSTID_RPCNO will be created
under cgi-bin/ which contain the scheduler replies. You can turn on
this mechanism for some time to study the scheduler replies.
In a little while I will add a similar debugging feature which also
prints the corresponding scheduler requests.
svn path=/trunk/boinc/; revision=5247
(a) make DB queries more efficient using name>'FILE__' and name<'FILE__~' rather than
name like 'FILE__%'
(b) Set 'no remaining work for this file' flag correctly by making a DB scan if needed.
One can show that this is the 'cheapest' reliable place to put this scan.
(c) Modify deterministic algorithm for finding unsent results so that instead of
starting with FILE="" and scanning forward over all files, it starts at a random
place in file space, scans cyclicly to the end, and then from "" to the start
point.
(d) Satisfy work request if possible. Don't terminate sending work until none left that
is feasible, or request satisfed.
(e) If a new file is needed, first pick file associated with unsent results which are more
than 2 hours old. Note: need to make this a user-configurable option, and add some
random +- slack.
For the record, here is the current locality scheduler logic.
I will update the docs once this is a bit better tested and
stable.
(1) If there is an (one) unsent result which is older than
(1) config.locality_scheduling_send_timeout (7 days) and is
(1) feasible for the host, sent it.
(2) If we did send a result in the previous step, then send any
(2) additional results that are feasible for the same input file.
(3) If additional results are needed, step through input files on
(3) the host. For each, if there are results that are feasible for
(3) the host, send them. If there are no results that are feasible
(3) for the host, delete the input file from the host.
(4) If additional results are needed, and there is (one) unsent
(4) result which is older than 2 hours and is feasible for the
(4) host, send it.
(5) If we did send a result in the previous step, then send any
(5) additional results that are feasible for the same input file.
(6) If additional results are needed, select an input file name at
(6) random from the current input file working set advertised by
(6) the WU generator. If there are results for this input file
(6) that are feasible for this host, send them.
(7) If additional results are needed, carry out an expensive,
(7) deterministic search for ANY results that are feasible for the
(7) host. This search starts from a random filename advertised by
(7) the WU generator, but continues cyclicly to cover ALL results
(7) for ALL files. If a feasible result is found, send it. Then
(7) send any additional results that use the same input file. If
(7) there are no feasible results for the host, we are finished:
(7) exit.
(8) If addtional results are needed, return to step 4 above.
svn path=/trunk/boinc/; revision=5129
actually not impossible. Consider the following scenario: WU A
has result 1 and WU B has result 2. These are both sent to a
host. Some time later, result 1 fails and the transitioner
creates a new result, result 3 for WU A. Then the host requests
a new result. The maximum result already sent to the host is 2.
The next unsent result (sorted by ID) is #3. But since it is
for WU A, and since the host has already gotten a result for WU
A, it's infeasible. So I think this is only wacky if
!one_wu_per_result_per_host.
- David, I simplified the inner part of send_results_for_file()
somewhat. I can't see the need/use for the bool bool
in_working_set argument. If I have really screwed the pooch
please revert.
svn path=/trunk/boinc/; revision=5106
Trivial bug, FPE on n % 0 when host has no files.
Hard bug, in the deterministic search to find a new result that can
be sent, the upwards search on name must be done not by comparing
RESULT name to FILENAME, but instead by comparing result name to the
maximal lexical resultname that can be constructed from the
filename, which is filename_ZZZ...Z where Z==0xff.
svn path=/trunk/boinc/; revision=5085
flag a file as over unless the WU generator has already indicated that
no further work can be remaining. Search code for 'David' to find some
comments.
svn path=/trunk/boinc/; revision=5077
log information from different scheduler requests running
in parallel don't collide in the log file and appear
intermingled. Very useful when doing verbose debugging.
svn path=/trunk/boinc/; revision=5069