- scheduler: fix egregious bug where wu_is_infeasible_fast() result
is ignored, and we send jobs to hosts that can't handle them.
- scheduler: don't check for disk space in work_needed();
do it in check_disk(), which generates a message to user.
- scheduler: add -debug_log flag, which sends stderr to
"debug_log" rather than scheduler_log.txt (for debugging)
svn path=/trunk/boinc/; revision=16578
- API: use non-verbose option to zip
- scheduler: if multiple_client_per_host is set,
don't mark results as over if get repeat CPID
svn path=/trunk/boinc/; revision=16445
If you store input and output files on different servers,
you can run 2 file_deleters, each one on the same machine
as the files it's going to be deleting.
- file_deleter: add -help option and usage()
client/
cpu_sched.cpp
sched/
file_deleter.cpp
svn path=/trunk/boinc/; revision=16397
because we don't have any (matchmaker only).
- back end programs: for programs that do enumerations,
check for error returns and exit
(otherwise we'll get stuck forever if DB fails)
NOTE: In the course of researching this I came across a bug
in the transitioner: if there's a WU with more than 1000 results,
the enumeration will always return ERR_DB_NOT_FOUND,
and the transitioner won't ever do anything again.
Fixing this is a little tricky, so I'm not going to do it right now.
svn path=/trunk/boinc/; revision=16324
If set the "effective NCPUS" (which is used to scale
daily_result_quota and max_wus_in_progress)
is max'd with the # of CUDA GPUs.
svn path=/trunk/boinc/; revision=16246
(after user confirmation).
This is called from "upgrade", and can also be run by itself.
NOTE: this mechanism will handle all DB updates going forward.
Older updates must be done the old way (edit and run db_update.php)
- Web: let teams determine whether they're accepting new members
svn path=/trunk/boinc/; revision=16160
is still alive before handling a request. If not, try to reconnect.
This will hopefully make things work better if MySQL goes down and up
when using FCGI.
svn path=/trunk/boinc/; revision=16112
we're the main program (otherwise we didn't lock it in
the first place, and a crash results). From Artyom Sharov.
- scheduler: add support for the GCL simulator,
which uses special versions of backend programs
that use virtual time,
and that wait for signals instead of sleep()ing.
To compile:
make clean
configure CXXFLAGS="-DGCL_SIMULATOR"
make
svn path=/trunk/boinc/; revision=16036
a modified boinc version.
- Added new header "boinc_fcgi.h" to be used instead of "fcgi_stdio.h".
This header defines I/O functions in the namespace FCGI rather than using
redefined functions the way "fcgi_stdio.h" does. This was causing a lot
of headaches when both <cstdio> and "fcgi_stdio.h" was called. Using
overloaded functions fixes this problem, except when the only difference
between functions is the return type (for example ::fopen() returns FILE*
and FCGI::fopen() returns FCGI_FILE*).
- Fixed some missing "#ifdef _WIN32" blocks in filesys.C
svn path=/trunk/boinc/; revision=15984
- API: in APP_INIT_DATA, enclose project preferences in tags
so that it's legal XML
- scheduler: add <multiple_clients_per_host> option.
Use this if your project runs on Condor or grids
and (to use multicore machines) you're running
multiple clients per host.
This will skip the host lookup based on IP address.
svn path=/trunk/boinc/; revision=15954
that points to the workunit being processed;
you can use this in your init_result(), compare_result() etc.
if you need it.
svn path=/trunk/boinc/; revision=15919
saying "no work was available for the apps you requested"
with locality scheduling (i.e. Einstein@home)
even if the user hasn't select apps.
Note: the logic for printing these messages won't work
for matchmaker scheduling.
svn path=/trunk/boinc/; revision=15847
(mostly from Simek)
fixes#716
- validator: tweak the way host error rate is computed,
e.g. on error bump rate by .1 instead of .05
svn path=/trunk/boinc/; revision=15771
using anonymous platform
even if they don't have the necessary app version.
Also, send an explanatory message in this case.
fixes#713
svn path=/trunk/boinc/; revision=15765
- scheduler: fix bug in adaptive replication:
if send an unreplicated job to untrusted host,
set both wu.target_nresults and wu.min_quorum to app.target_nresults.
svn path=/trunk/boinc/; revision=15762
client version. David -- this can probably be done
better and might indicate that some other info is not
being properly copied. Please review and fix if needed.
Before this fix, scheduler was complaining about
outdated core clients version 0 < min needed core 413.
tools for scheduler logging: change cgi.log.X to scheduler.log.X
in script that creates on-line logs for users to read
to help diagnose problems.
svn path=/trunk/boinc/; revision=15751
wish to use it.
- The script calculate_credit_multiplier (expected to be run daily as
a config.xml task) looks at the ratio of granted credit to CPU time
for recent results for each app. Multiplier is calculated to cause
median hosts granted credit per cpu second to equal to equal that
expected from its benchmarks. This is 30-day exponentially averaged
with the previous value of the multplier and stored in the table
credit_multplier.
- When a result is received the server adjusts claimed credit by the
value the multiplier had when the result was sent.
svn path=/trunk/boinc/; revision=15661
If an app is hard, the scheduler always does the deadline check,
even if the client has no other jobs for this project.
And the estimated wallclock duration is multiplied by 1.3,
to avoid sending jobs to hosts that will barely make the deadline.
Hard apps are marked by setting weight = -1.
This is a total kludge, to avoid adding another field to app.
svn path=/trunk/boinc/; revision=15607
1) the assimilator creates a job_summary_WUID file saying
- what host did the job
- error status if any
- info about missing output files
2) all output files are now optional.
3) the assimilator deletes temp files (templates, job dir file)
svn path=/trunk/boinc/; revision=15551
in scheduler request messages, without checking its contents.
One user had apparently edited global_prefs.xml with an XML editor;
it had an <?xml tag at the start,
and had been collapsed into a single line with no newlines,
and no newline at the end.
This caused all scheduler requests from that client to get
"Incomplete request" responses.
The long-term fix is for the client to verify global_prefs.xml,
and for the scheduler to parse it with XML_PARSER.
As a short-term fix, I made these changes:
- If the scheduler reads a line that's too long, it ignores it.
- The scheduler ignores <?xml
svn path=/trunk/boinc/; revision=15543
mostly so that the parse function could assume
that everything was initially zero.
However, various back-end functions pass around SCHED_CONFIG&
as an argument (also named "config").
This creates a shadow, which is always bad.
Worse is the possibility that some projects have back-end programs
that have a SCHED_CONFIG variable that's automatic,
and therefore isn't zero initially,
and therefore isn't parsing correctly.
To fix this, I changed the 2 vectors in SCHED_CONFIG into pointers,
and have the parse routine zero the structure.
I was tempted to remove the SCHED_CONFIG& args to back-end functions,
but this would have broken some projects' code.
I did, however, change the name from config to config_loc
to avoid shadowing.
Also fixed various other compiler warnings.
svn path=/trunk/boinc/; revision=15541
set the timestamp of the thread to the timetamp of
the latest non-hidden post (rather than to now).
Same thing for forum timestamp.
- scheduler: return more informative message to user in case of
request message parse error
svn path=/trunk/boinc/; revision=15526
was being cast to a pointer to 64-bit time field
(this caused wrong results on 64-bit servers)
From Sharov Artyom.
svn path=/trunk/boinc/; revision=15517
This tells the sample bitwise validator to ignore this file.
- client: parse the above field (avoid "unparsed XML" msgs)
svn path=/trunk/boinc/; revision=15514
- change ERR_CHILD_FAILED TO EXIT_CHILD_FAILED
(it's an exit code, not a function error code)
- client: reduce severity of benchmark error
- scheduler: compile fix
svn path=/trunk/boinc/; revision=15423
add new functions get_output_file_info();
- change get_output_file_path() to look at the result's
xml_doc_in rather than its xml_doc_out;
this is the one that will have <optional/>
- fix crashing bug in the above
svn path=/trunk/boinc/; revision=15334
to return a struct FILE_INFO (including "optional")
instead of just the filename.
This lets you avoid erroring out if optional file is missing.
- Sample bitwise validator: support > 1 output file correctly
svn path=/trunk/boinc/; revision=15332
added client/scripts to default client build
removed sea from the default clientgui build
added locale/client to the default clientgui build
moved installed headers from $(includedir) to $(pkgincludedir) which
is $(includedir)/boinc by default.
removed redefinitions of $(includedir) from Makefiles.
- configure:
added locale/client/Makefile to AC_CONFIG_FILES
svn path=/trunk/boinc/; revision=15300
- config option <matchmaker> for matchmaker scheduling
- config options <mm_min_slots>, <mm_max_slots>, <job_size_matching>
to control matchmaker scheduling
- scheduler: tweaks to matchmaker scheduling from Kevin Reed
- web: fixes to alternative stylesheet from Simek
svn path=/trunk/boinc/; revision=15281
would send a reply without having looked up the user and team
in the DB; e.g.:
- client version# is too low
- DB is down
- host is blacklisted
It would then send a full scheduler reply,
including a blank team name and other missing info.
Fix this by setting reply.nucleus_only initially
(this causes a minimal reply to be sent)
and clearing it only if the host/user/team lookup succeeds.
Fixes#417, #633 (I think)
svn path=/trunk/boinc/; revision=15232
Keep track of the "easiest" job that has been rejected by EDF sim.
Any jobs harder than this one can be rejected without doing the sim.
svn path=/trunk/boinc/; revision=15171
to avoid confusion with "name" field of CUDA.
This is a bug fix - please port.
- start script: don't error out if run_state.xml file is empty
(which happens if project runs out of disk space)
svn path=/trunk/boinc/; revision=15168
for getting info on EDF simulation;
change output from seconds to hours
- API: remove extern "C" from graphics API
(convince me it's needed before restoring)
svn path=/trunk/boinc/; revision=15148
Let x be the host speed (expressed in stdevs from mean)
Let y be the job size (expressed in stdevs from mean)
Decrement score by (x-y)^2
svn path=/trunk/boinc/; revision=15137
(attempt to send big jobs to fast hosts, small jobs to slow hosts).
- have "census" compute mean/stdev of host speeds,
write it to a file perf_info.txt
- have feeder compute mean/stdev of sizes of jobs in shmem
- have feeder read perf_info.txt into shmem
- scheduler: add some debugging messages for app version selection
- Add LGPL license to a few files
- upgrade/setup scripts: copy census to bin/
svn path=/trunk/boinc/; revision=15136
Merge redundant messages.
Condition various messages on config flags.
- client (Unix) fix to CUDA detection if LD_LIBRARY_PATH is ""
svn path=/trunk/boinc/; revision=15122
uncomment MATCHMAKER to enable it.
More testing needed.
- client (unix): avoid crash if LD_LIBRARY_PATH not set
(port to 6.1 branch)
svn path=/trunk/boinc/; revision=15115
before looking for CUDA library
- scheduler: some additional work on matchmaker scheduling
Changed check_app_filter() so that it doesn't depend on
the current multi-phase approach;
move that logic to scan_array()
svn path=/trunk/boinc/; revision=15109