- For locality scheduler, if anonymous platform lacks app, don't do deterministic
search for work!
- For locality scheduler, remove 'unsent' constraint from initial query so that
existing index in result table can be used to perform a more efficient search.
- Send multi-message replies to core clients > 4.19
- Change 'no work available' message to 'no work sent' since this is often due
to constraints at the client end, NOT lack of work at project end.
svn path=/trunk/boinc/; revision=5492
the daily_result_quota constraint was not being enforced.
Normally this constraint is enforced in the work_needed()
function. However note that the critical send_work() function
NEVER checks work_needed() [DAVID, perhaps it should?] before
calling send_work_locality() or scan_work_array(). Then, when
send_work_locality() was called, it would in turn call
send_old_work() immediately, WITHOUT checking to see if
work_needed() was TRUE. This allowed the daily_result_quota
constraint to be broken.
Possible fixes included:
test work_needed() before calling send_old_work()
test work_needed() WITHIN send_old_work()
test work_needed() within possibly_send_result()
test work_needed() within wu_is_infeasible()
Conclusion: work is ONLY sent by the function
possibly_send_result() which is called in two places in
sched_locality.C: once in send_results_for_file() and once in
send_old_work(). The first of these DOES check the value of
work_needed(). The second does NOT. So I added a check of
work_needed() within send_old_work(). A also added
added another check of work_needed() at the top of
send_results_for_file() BEFORE any DB access is done. It might be
better to put this test of work_needed() lower down (within
possibly_send_result()) or higher up (where send_old_work())
is called. I am not sure. David, I'd appreciate your advice.
svn path=/trunk/boinc/; revision=5482
4 CPUS.
Improved error messages if users are being denied work because of
lack of CPU. The message reports back their on fraction, active
fraction, and resouce share fraction, as percentages.
svn path=/trunk/boinc/; revision=5466
scheduler, and fails to get work because there are N secs
of pending work, then send a delay request of min(3600, N/5) secs.
Otherwise the same host was coming back every hour, without being able
to get additional work.
Implemented by adding a method set_delay() to
SCHEDULER_REQUEST. This sets the delay to the maximum of the
previous requested delay or the current requested delay. The
delay is NEVER set longer than two days.
svn path=/trunk/boinc/; revision=5437
- Ignore CPU limitations and resource share entirely, IF
a host:
(1) has no work for this project
(2) has no results in this sched reply
This ensures that any host that wants to do work will at least
get *something*. It liberalizes slightly David A's approach
from 14 Feb 2005. Eliminate use_time_stats from wreq structure.
- Scheduler changes (locality scheduling only):
- Improve return value info for some functions.
- Modify send_old_work() to accept a t_min < t < t_max time range
- New sched locality algorithm to send work to hosts with no files.
Send oldest result in the time range A < t < B where
B = locality_scheduling_timeout/2
A = B - rand*locality_scheduling_timeout/2
Here rand is a uniformly distributed random number in [0,1].
- When an unsent result is older than locality_scheduling_timeout, no
longer send it to the FIRST host that requests work. Instead send
it to the first host which has a connection speed > 100kb/s.
- Fix file deletion. Previously we were deleting files from hosts
when they got no work for that file. But this might have been
because the work was infeasible (cpu time). Now delete files
from host ONLY if there is no work remaining for that file.
svn path=/trunk/boinc/; revision=5434
a work request, do not search for or send further work. This is the same
way that disk space limits are handled. This is necessary since otherwise
a host with small memory will endlessly trigger the WU generator, churning
out infeasible WUs.
Added boolean arg to host_has_file() following David A's advice. This
eliminates the 'expensive' copy of a large data structure. The bool arg
makes host_has_file() skip the final WU in the vector in hunting for a file.
Better log message for setting coredump size.
Added RCSID tag to sched_timezone.C
svn path=/trunk/boinc/; revision=5397
is disabled by default. Having this
is really useful if the scheduler is crashing some of the time. You
can load the core dump file into a debugger to see where things are
breaking. To use this, edit sched/main.C by hand and set
#define DUMP_CORE_ON_SEGV 1
svn path=/trunk/boinc/; revision=5385
- Address David's comment of Feb 2. Now properly reduce the
disk size resource requirements of a WU being sent if the
file is already on the host, or already included in a previous
WU being sent. DAVID: please check that reply_copy.wus.pop_back()
is right.
- For this, define a function host_has_file(). This can also
be used in the future for more intelligent file deletion
schemes.
- Make warnings to upgrade old clients have low priority until
3 days before deadline. Then high priority.
- Fix sign error in messages sent to users about insufficient
disk space.
- Move extract_filename() from sched_locality.C to sched_util.C
- Pretty up the ordered list of URLs printed for a given host.
- I've even tested these changes before committing them!
svn path=/trunk/boinc/; revision=5382
<min_core_client_version_announced> N </min_core_client_version_announced>
<min_core_client_upgrade_deadline> M </min_core_client_upgrade_deadline>
This is used to warn users in advance if a new minimum core client is going
to be required. Users have until time 'M' (Unix epoch time(2) format)
to upgrade. Not yet tested.
svn path=/trunk/boinc/; revision=5370
computing timezone differences, not taking into account the fact that
UTC+11 hours and UTC-11 hours are only 2 hours apart. Duh.
svn path=/trunk/boinc/; revision=5357
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