E@H specific is now included (but protected by
#ifdef EINSTEIN_AT_HOME
to make it simpler for me to maintain consistency with BOINC cvs.
- Added project-specific unacceptable_os() function for rejecting hosts.
- Transitioner and scheduler now initalize host.max_results_day correctly
in database under all circumstances.
- Browser requests are now correctly identifed (REQUEST_METHO=="GET") and
properly redirected. This was broken. David, please see comment near
one of the probable_user_browser=true in handle_request.C. I think
something is wrong here (or I am missing the point!).
- More info about requests is logged
- If the scheduler hangs (incoming request incomplete) it will normally be
killed by Apache after a timeout. But this happens silently. So I now
install a signal handler and catch this SIGTERM. In this case an
error message is logged and all open files are flushed before exit(1)ing.
- If IO is passed through files, check that request length and content length
agree and log a message if they do NOT.
- active_frac not correctly reported by 4.19 and earlier core clients.
Adjust for this in estimating wallclock execution times.
- Added a small block into validator code to attach a debugger.
svn path=/trunk/boinc/; revision=5688
- 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
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
- 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
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
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
of gcc to try and force them to not complain with -Wall but to always
include this, I decided to take a simpler approach. All these strings
now have global linkage. To prevent namespace conflicts they all
have different names. For the record, the variable extension is a hash made of the first ten characters of the md5sum of the file path, eg:
md5hash=`boinc/api/x_opengl.C | md5sum | cut -c 1-10`
svn path=/trunk/boinc/; revision=4979
the top of all .C files. This means that 'string' or 'ident'
run on an executable will tell you the exact file versions used
in building it, since CVS replaces $Id$ with a complete version ID
string. Declaration is volatile so that the compiler won't remove
it even under agressive optimizations.
svn path=/trunk/boinc/; revision=4610