tells the client to use this as the data directory
- scheduler: improve the message telling the client that
more disk or memory is needed;
tell them the minimum amount needed to
send any of the jobs rejected,
rather than the amount needed for the first job rejected
- manager: fix text in "connect now" dialog
svn path=/trunk/boinc/; revision=13387
To do this, set host.max_results_day to -1.
If you do this, scheduler requests from that host
will get an error message, and will otherwise be ignored
(no jobs in or out, no trickles).
- Scheduler: send_message() should be called ONLY if you're
not going to call handle_request();
otherwise we'll write two separate replies.
To fix this, I added a separate function (send_error_message())
that can be called within handle_request()
to deal with error situations.
- Scheduler: moved debug_sched() to main.C
- Scheduler: moved logic to send "delete file" commands
out of handle_request() into a separate function,
send_file_deletes() in sched_locality.C.
Remove #ifdef EINSTEIN_AT_HOMEs; maybe someday another project
will use locality scheduling!
svn path=/trunk/boinc/; revision=13108
If deleting a file with name matching pattern h1_XXXX.XX_S5R2
generate corresponding l1_h1_XXXX.XX_S5R2 pattern and delete it also
This is needed because E@H is doing file locality scheduling with
PAIRS h1_... and l1_... of files. Yuk.
svn path=/trunk/boinc/; revision=13087
In principle, a project can now use both
locality scheduling and homogeneous redundancy.
- scheduler: do HR check before deadline check,
since the latter is slower.
- scheduler: wu_is_infeasible() doesn't return a bitmap.
Change its return values to sequential numbers.
- scheduler: ignore <accelerator> and <p_capabilities> tags
sched/
sched_send.C,h
sched_array.C
sched_locality.C
server_types.C
svn path=/trunk/boinc/; revision=12791
<no_forum_rating> tag.
- locality scheduler: when getting a working set file name
using glob(3), do not glob multiple times, possibly getting
back the same file name again. Instead glob once and then
randomly choose file names, crossing items off the list one
at a time. Note: I wrote this code using STL vectors and
strings, but now regret this: the necessary vector insertions
are potentially inefficient.. Sometime next week I will
recode this using a C-style pointer arrays with guaranteed O(1)
efficiency. But I want to get this into CVS while it's
working.
- locality scheduler: fix is_host_slow() function following
David's Jan 12 checkins to use claimed_credit_per_cpu_sec.
svn path=/trunk/boinc/; revision=12156
to send different work to slow and fast hosts. I'm experimenting with
the use of this in the locality scheduler.
svn path=/trunk/boinc/; revision=10390
WU, I need to separate two types of 'sticky/report on RPC' files.
One type is used for WU names of the form FILE__ and the others
are auxilliary. David, after I've talked with you I'll either
generalize this notion or we can eliminate it.
svn path=/trunk/boinc/; revision=9131
lower case and upper case
locality scheduler: when searching for new work using advertised
files, retry ten times before starting a deterministic search.
We should probably modify this to try ALL advertised files in
a random order before moving onto a deterministic search.
svn path=/trunk/boinc/; revision=6482
lib advertise data file when new result is created.
code organization: create new lib function boinc_touch_file()
from code that was in locality scheduler module.
svn path=/trunk/boinc/; revision=6456
assume that they are inadequate for ALL WU. Without this we will
execute an expensive deterministic search over all WU, looking
for one that is appropriate. This could be a config option if
desired, or one might add in an extra search step to find WU with
appropriate resources. But for now this is the cleanest.
svn path=/trunk/boinc/; revision=5999
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
- 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