- web: check whether to show profile in separate function
from displaying profile; eliminate double headers
- scheduler: finish purge of redundant arguments
svn path=/trunk/boinc/; revision=16726
put a textual summary of them in host.serialnum (currently unused)
- web: show coprocs on host detail page
- db_dump: include coproc info in host XML
svn path=/trunk/boinc/; revision=16697
for the selected APP_VERSION, rather than on the CPU benchmarks.
Otherwise estimates are wrong for GPU or multi-thread apps.
- scheduler: start switching from having SCHED_REQUEST and
SCHED_REPLY as globals instead of passing them around as args;
to be continued.
svn path=/trunk/boinc/; revision=16691
- 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
- scheduler: condition lots of log file writes on config flags
(i.e. divide "debug" output into a bunch of categories, individually selectable)
svn path=/trunk/boinc/; revision=15101
send <client_cap_plan_class/> if client understands
app version plan class.
The server checks for this instead of version > 6.11.
- clean up unix_util: .h files declare only (extern) interfaces;
no reason for daemon() to be C
svn path=/trunk/boinc/; revision=15006
and change the correspending structure field from 64KB to 256KB
(could increase this if needed).
This is needed to handle app versions with lots (> 100) of files
- change LARGE_BLOB_SIZE to BLOB_SIZE a bunch of places
- Change COPROCS from vector<COPROC> to vector<COPROC*>.
Otherwise the right virtual functions of COPROCs don't get called
svn path=/trunk/boinc/; revision=14986
in server->client reply messages and in the client itself,
move app-planning info from RESULT to APP_VERSION.
This was necessary to allow anonymous platform info (app_info.xml)
to specify avg_ncpus, etc.
e.g., if someone wants to write a multithread version of SETI@home,
or a GPU/CUDA version,
they can run it using the anonymous platform mechanism
and it will be scheduled correctly.
If a server sends an existing APP_VERSION but with different
app-planning info, the client will accept and use the new info.
svn path=/trunk/boinc/; revision=14978
- update_versions: use __ (not :) as separator for plan class
- client: add plan_class to APP_VERSION;
an app version is now identified by platform/version/plan_class
- client CPU scheduler: don't assume apps use 1 CPU
- client: add avg_ncpus, max_cpus, flops, cmdline to RESULT
- scheduler: implement app planning scheme
Other changes:
- client: if symlink() fails, make a XML soft link instead
(for Unix running off a FAT32 FS)
- client: don't accept nonpositive resource share from AMS
- daemons and DB: check for error returns from enumerations,
and exit if so. Thus, if the MySQL server goes down,
all the daemons will soon exit.
The cron script will restart them every 5 min,
so when the DB server comes back up so will the project.
- web: show empty max CPU % as ---
- API: get rid of all_threads_cpu_time option (always the case now)
svn path=/trunk/boinc/; revision=14966
- scheduler: wreq.core_client_version was being computed in
resend_lost_results() (which isn't necessarily called)
but its value was used elsewhere.
svn path=/trunk/boinc/; revision=14948
- DB code: remove "is_high_priority" stuff.
- scheduler: merge find_app_version() into get_app_version().
Have the latter memoize its results (both positive and negative).
Have it call app_plan() for apps with nonempty plan_class.
- scheduler: first steps towards improved selectability of log messages.
It will eventually be like the client,
where you can select among various types of messages.
- feeder: if can't unlink the reread_db trigger file, exit
(else we'd go into an infinite loop)
svn path=/trunk/boinc/; revision=14940
to allow validator to assign different credit
to different instances of a job
- Scheduler: if can't open DB, return <project_is_down/>
(fixes#578)
- clean up logic of modify_claimed_credit
- feeder: for -priority_order_create_time, use workunitid
rather than create time (faster for the DB)
from Kevin Reed
svn path=/trunk/boinc/; revision=14908
and apps that use coprocessors.
There now can be several app_versions for the same
(app, platform, version_num) combination.
This changes a number of things.
- Added app_version.plan_class field to DB
- update_versions now looks for a :plan-class in the
file or directory name, and puts it in the app_version's DB record
- Change uniqueness constraint to include plan_class
- Feeder: the feeder was putting non-deprecated app_versions
in shared mem, and leaving it to the scheduler to
find the latest version for a given platform.
This is dumb.
Instead, for each app/platform pair the feeder now
finds the highest version number of a non-deprecated app version,
and enumerates all non-deprecated app_versions with that
app/platform/version
- Scheduler: add a BEST_APP_VERSION data structure that keeps track,
for each app, what the best app_version is for this host.
This saves the work of recomputing it for each job.
svn path=/trunk/boinc/; revision=14906
The new field (workunit.rsc_bandwidth_bound)
goes at the END of the record.
Always do it this way!
- make_work: after creating a batch of new WUs,
we were waiting 60 sec for the transitioner to
create the results for them
(so that our next count of unsent results would be correct).
This is bogus; if e.g. the transitioner isn't running,
we'll never get the results, and we'll keep creating WUs forever.
Instead: explicitly wait for there to be results for
the last WU from the batch just created.
- scheduler: parse <allow_non_preferred_apps>, <allow_beta_work> correctly.
svn path=/trunk/boinc/; revision=14875
The design has been changed to constant #threads per app version
Various changes from Kevin Reed/WCG:
- server: add workunit.rsc_bandwidth_bound: if nonzero,
send this WU only to hosts with that much download bandwidth
- assimilators: if a handler returns DEFER_ASSIMILATION,
the WU remains in INIT state and will be handled when the
next instance completes.
Useful if you want the assimilator to see all instances.
- scheduler: when setting result.outcome = DETACHED,
set received_time to now
- scheduler: removed the reliable_time and reliable_min_avg_credit
options
- scheduler/web: add optional <allow_non_preferred_projects>
in project preferences.
If present, user will accept work from non-selected apps
if no work is available for selected apps
- scheduler: improved messages for projects with multiple apps
- scheduler: added config options
<granted_credit_weight> and <granted_credit_ramp_up>.
Used in calculating host.claimed_credit_per_cpu_sec,
but I'm not sure how.
- Added two new credit-granting formulas (validate_util.C):
stddev_credit() and two_credit()
- server DB: add rollback_transaction() and affected_rows() to DB_CONN
NOTE: DB update required
svn path=/trunk/boinc/; revision=14870
It works, at least in my test case.
- boinc_submit script:
show status every 10 seconds until completed
add --wait option to show status for previous submission
- Added get_logical_name() in validate_util.C
- create_work: change default target_nresults from 5 to 2,
max_error_results from 10 to 3,
max_total_results from 20 to 10,
max_success_results from 10 to 6
- boinc_cmd: show full usage if no args
- project setup: copy single_job_assimilator
svn path=/trunk/boinc/; revision=14847
> boinc_submit --infile foo --outfile blah program --args
This will run "program" on a remote host,
with the given input, output files, and command-line args
It manages everything for you.
You don't have to worry about apps, app_versions,
template files, wrapper job files, etc.
See: http://boinc.berkeley.edu/trac/wiki/SingleJob
Initial checkin - not debugged yet.
svn path=/trunk/boinc/; revision=14842
But if we do, set their transitioner time to plus infinity
so that we don't see them again.
(otherwise we go into an infinite loop)
- DB code: remove "high_priority" from queries not from scheduler
(should probably remove them from there too)
- file_deleter: print error msg if apache user doesn't exist
svn path=/trunk/boinc/; revision=14835
- web: "least recent" => "oldest", "most recent" => "newest"
- scheduler: change DELAY_NO_WORK_CACHE from 20 min to 0.
Otherwise, a host that has max_wus_in_progress,
completes one, and sends a work request before the upload is finished
will delay (and maybe sit idle) for 20 min.
Better to have a few extra scheduler requests
and let the client's backoff take care of things.
svn path=/trunk/boinc/; revision=14822
into a #define's symbol (ASSIGNED_WU_STR)
- scheduler: when send client command to abort a WU,
include a reason code in the scheduler log
svn path=/trunk/boinc/; revision=14798
config.xml has optional <ban_os> and <ban_cpu> elements,
which contain regular expressions matched against
os_name\tos_version and p_vendor\tp_model.
If a host matches either one, it's not sent jobs.
- scheduler: fix bug in job assignment
- scheduler: initial (incompleted, commented-out) code for
matchmaker scheduling
- server programs: declare "SCHED_CONFIG config" in sched_config.C;
remove declarations of it from all other .C files
(because I added a vector to it, I can no longer use memset
to initialize it to zero; instead, it must be a global variable,
not an automatic)
svn path=/trunk/boinc/; revision=14783
Lets you assign a WU to a particular host,
to one or all hosts belonging to a user or team, or to all hosts.
See http://boinc.berkeley.edu/trac/wiki/AssignedWork
Disabled unless you include <enable_assignment> in config.xml
Uses a new DB table.
Tested but only a little.
- Server: code cleanup; moved result-handling to a new file,
and removed the PLATFORM_LIST arg to everything
(put it in SCHEDULER_REQUEST instead)
svn path=/trunk/boinc/; revision=14767
in case someone else changed since we read it.
Hopefully this will fix a race condition
where WU results get sent to different HR classes.
(Alternatively we could use transactions,
or acquire the semaphore during read/update,
but this could impact performance).
svn path=/trunk/boinc/; revision=14710
- server: limit global prefs mod time to now
These changes address the situation where a server
sends out prefs with mod time far in the future,
and there's no way to undo them
svn path=/trunk/boinc/; revision=14664
use most recently created host with same domain name,
IP addr, OS name, and CPU model, if one exists.
(from Kevin Reed)
svn path=/trunk/boinc/; revision=14597
It didn't work on a host's first scheduler RPC
(when it passes an auth but no host ID).
How do we look up user in this case?
The weak auth is not stored explicitly in the DB.
Solution: include the user ID in the weak auth.
(this invalidates existing weak auths)
svn path=/trunk/boinc/; revision=14546
This is for debugging apps (currently works only in Unix).
What it does: when running an app,
the client does everything except actually fork/exec the app,
i.e. it sets up the slot dir, creates shared mem segment etc.
It then continues as if the app were actually running,
and you can then manually run your app under a debugger
in the slot directory.
Note: the client won't notice the termination of your app.
- API, Unix: in situations where the timer thread wants to exit
(e.g. it notices a missing heartbeat).
don't directly call boinc_exit(),
since this touches data structures that the worker thread
may be using concurrently.
Instead, set a flag telling the worker thread to call boinc_exit()
(which it will do from its signal handler)
This is an attempt to fix problems reported by Bernd;
I haven't tested it.
- scheduler: add config flag for uploading usage data
- web: show account key and weak account key on user page
- added some code for multithread support (not finished)
api/
boinc_api.C
svn path=/trunk/boinc/; revision=14542
Previously it was called from both timer and worker thread,
with no synchronization. Bad.
boinc_finish(): sleep for 2 seconds, enough to ensure that
the timer thread sends the final messages.
- API: a compile flag GETRUSAGE_IN_TIMER_THREAD selects
how to get CPU time; by default set only for Mac OS X
- scheduler: cap #CPUs scaling for <max_wus_per_host> at 8
svn path=/trunk/boinc/; revision=14495
- web: add app selection to example project-specific prefs
(commented out by default)
- web: in prefs, flag too-low numeric values as errors,
rather than just setting to min value
- web: fix bug when add new venue from "columns" view
svn path=/trunk/boinc/; revision=14442
Each account has an associated weak account key.
The user can see it by visiting weak_auth.php.
If you put the weak account key in the account file on a computer
(instead of the regular account key)
the computer will attach to the account.
But the weak account key cannot be used to log in
to the account on the web, or to do web RPCs, or anything else.
Note: this involves a scheduler change.
svn path=/trunk/boinc/; revision=14367
- user web: don't show team forum in Q&A page
- scheduler: code (commented out) to recognize when
a sched request is from an existing host
(same IP/domain/RAM size) and reuse the host record;
from Kevin Reed
svn path=/trunk/boinc/; revision=14283
1) a WU is marked as ready for assimilation and has no errors;
2) it has no canonical result
In this case, the assimilate handler gets called anyway,
typically with the canonical result of the previous WU as arg.
Note: this situation doesn't arise normally;
it might happen if some results are deleted accidentally.
The fix:
- identify this situation, and set the WU.error_mask to a new code
(WU_ERROR_NO_CANONICAL_RESULT)
- zero out the "canonical_result" variable passed to the handler,
so even if the handler fails to check wu.error_mask,
at least it won't assimilate the same result twice.
Thanks to Hendrik Verhoek for finding this bug.
- DB schema: team table type is MyISAM, not InnoDB
svn path=/trunk/boinc/; revision=13938
and access to worker_thread_ru.
This was being used in the worker signal handler,
which is bad because pthread_mutex_lock() can allocate memory.
I don't think this matters; at worst we might get
CPU times off by < 1 sec.
svn path=/trunk/boinc/; revision=13844
in wu_is_infeasible(), check whether host type is unknown
before seeing if WU is already committed to different type
svn path=/trunk/boinc/; revision=13777
"task" instead of "result";
"computer" instead of "host";
"scheduler request" instead of "scheduler RPC"
"access to Internet" instead of "access to reference web site"
svn path=/trunk/boinc/; revision=13774
that caused it to report "volume full" erroneously
- added --help option to some backend programs;
gives general info and directs to web page
file_upload_handler.C
svn path=/trunk/boinc/; revision=13685
update_versions to add version 6 apps.
It looks for API_VERSION string in main executable,
adds the API version to the app_version XML,
and sets min_core_version to 6 for version 6+ apps
- API: include API_VERSION string
- convert tabs to spaces here and there
- scheduler: parse unused elements in <net_stats>
- ops/show_log.php: if no URL args, just show form (fixes#415)
- client: parse and store api_version (not used yet)
svn path=/trunk/boinc/; revision=13627
of file deletion. If you set file_deletion_strategy to 0 (default)
then this turns off file deletion in the locality scheduler.
Set file_deletion_strategy to 1 to get current behavior. Other
values are not defined. I'll document this in the Wiki.
sched/
sched_config.h
sched_config.C
sched_locality.C
svn path=/trunk/boinc/; revision=13594
in get_file_size() RPC, check if volume has < 1MB available space
and if so return transient error.
This prevents client from trying upload,
which apparently sends entire file even if
handler fails at the beginning
- API, Win: remove use of GetTickCount(); use dtime() instead
- use new BOINC logo in sample project home page
svn path=/trunk/boinc/; revision=13574
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
In principle 0660 should work (assuming apache belongs to admin group)
but apparently on some Linux systems it doesn't,
and the feeder gets "can't attach to shared mem" errors.
- scheduler: print uid/gid info if can't attach to shared mem
- user web: fix bug in team founder transfer form
svn path=/trunk/boinc/; revision=13255
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
"resend_lost_results" option was used also
(because the count of in-progress results was
based from the DB query used by resend_lost_results).
Fix: initialize the count of in-progress results to
the list provided in the scheduler request.
- scheduler: add "--mark_jobs_done" flag; if set, all jobs
sent are marked as done, and their WUs enabled for transition.
This is used for simulation purposes,
in conjunction with sched_driver.
- scheduler: if --batch option is set, don't check RPC seqnos
(for simulation purposes)
svn path=/trunk/boinc/; revision=13101
This generates a sequence of scheduler requests,
with host info taken from a file,
that you can feed into the scheduler (cgi --batch)
to simulate things like homogeneous redundancy
- Added args to XML_PARSER::skip_unexpected() to you can say
whether to write messages to stderr for unparsed stuff.
This is set to true if log_flags.unparsed_xml is set (client)
or if debug_level is 3 (server)
- removed references to $(LIBRSA) in Makefile.am's
client/
Makefile.am
acct_mgr.C
gui_rpc_server_ops.C
log_flags.C
lib/
Makefile.am
app_ipc.C
gui_rpc_client_ops.C
parse.C,h
prefs.C
sched/
Makefile.am
sched_config.C
sched_driver.C
svn path=/trunk/boinc/; revision=13090
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
between completing a result and reporting it.
- back end: added <httpd_user> config option:
Web server user name (used by file deleter)
- back end: don't report unparsed XML in config.xml as an error
client/
app.h
work_fetch.C
lib/
shmem.C
sched/
file_deleter.C
file_upload_handler.C
sched_config.C,h
show_shmem.C
svn path=/trunk/boinc/; revision=13039
- back end: use boinc_mkdir to get permissions right
html/inc/
stats_sites.inc
lib/
filesys.C
sched/
db_dump.C
db_purge.C
feeder.C
svn path=/trunk/boinc/; revision=13033
on successive calls, scans through ALL the sendable
jobs satisfying the select clause
(it does this by ID order, so there's no order clause)
This is used for HR, so that if a job has been committed
to an HR class, we eventually get it.
With extremely minimal testing, the new HR stuff seems to work.
db/
boinc_db.C,h
sched/
feeder.C
sample_work_generator.C
server_types.C
svn path=/trunk/boinc/; revision=12988
- back end: moved HR_INFO to a separate file;
did some debugging in HR code
html/
inc/
forum_user.inc
util.inc
user/
forum_pm.php
sched/
Makefile.am
census.C
feeder.C
hr.C,h
hr_info.C,h (new)
svn path=/trunk/boinc/; revision=12978
there is for each HR class, and writes it to a file.
This will be used soon for HR support in the feeder.
- split the HR code into hr.C,h (stuff used by both census and scheduler)
and sched_hr.C (stuff used only by the scheduler)
- database: change DB_CREDITED_JOB to treat workunitid
as a double (which it is) rather than a long.
BTW, long == int.
- fixed lots of compile warnings in the server code
db/
boinc_db.C,h
lib/
boinc_cmd.C
miofile.C
util.C
sched/
Makefile.am
census.C (new)
feeder.C
file_deleter.C
file_upload_handler.C
handle_request.C
hr.C,h (new)
main.C
sample_assimilator.C
sample_work_generator.C
sched_array.C
sched_hr.C,h
sched_send.C
server_types.C
transitioner.C
validator.C
svn path=/trunk/boinc/; revision=12970
for WUs of different applications
(need to count unsent results separately by app)
- feeder: major code cleanup
- application interleaving (for -allapps) is now done
by building a static slot-to-app array "app_indices".
Fractional weights now work correctly.
- enum sizes (for -allapps) are now precomputed
in an array "enum_sizes"
- rename "found" (confusing!!) to "collision"
- swapped the names of mod_select_clause and select_clause,
to reflect what they actually are
- file deleter: in finding oldest WU, order by id instead of create_time
(there's no index on create_time)
- user web: show "merge by name" only to host owner
- add cpu_scheduler_period() member to GLOBAL_PREFS
(so you don't have to multiply by 60 everywhere)
- infinite() fix for HPUX
client/
cpu_sched.C
cs_cmdline.C
cs_scheduler.C
rrsim_test.C
sim.C
work_fetch.C
html/user/
hosts_user.php
lib/
parse.h
prefs.h
sched/
feeder.C
file_deleter.C
make_work.C
sample_work_generator.C
sched_util.C,h
tools/
updater.C
svn path=/trunk/boinc/; revision=12968
These let the Manager run the graphics app.
Graphics apps have physical name *v6graphics*
- Separated ACTIVE_TASK::write() and ACTIVE_TASK::write_gui().
These need to write largely disjoint set of items.
- code cleanup: remove a zillion "else"s in parsing code
- code cleanup: change a zillion match_tag(buf, "<foo/>"
to parse_bool(buf, "foo")
client/
app.C,h
client_state.C
client_types.C,h
lib/
gui_rpc_client.h
gui_rpc_client_ops.C
sched/
server_types.C
svn path=/trunk/boinc/; revision=12938
from a bool to an int:
0 = no HR
1 = HR with fine-grained classification (from MF Somers)
2 = HR with coarse-grained classification (from WCG)
Note: numerical equivalence depends on your application
and how it's compiled. Some apps may need classifications
other than these two. Contact me if so.
sched/
sched_hr.C
sched_config.C,h
svn path=/trunk/boinc/; revision=12934
(don't send work to Mac OS X 10.2 or earlier).
This used to be #ifdef in by Einstein@home.
- scheduler: add no_amd_k6 option
(don't send work to AMD K6 CPUs)
sched/
handle_request.C
sched_config.C,h
svn path=/trunk/boinc/; revision=12912
(undoes checkin of 25 Jan 2005; I don't remember why we
made that change. Next time put in checkin notes!)
- client: Linux: show error msg if can't open /proc/cpuinfo
or /proc/meminfo; set memory size of 1 GB in latter case.
Remove duplicate code that read /proc/meminfo
- 'start' script; handle <disabled>0</disable> in tasks and daemon
elements of config.xml (can't handle <disable/>, however).
client/
gui_rpc_server_ops.C
hostinfo_unix.C
sched/
feeder.C
start
svn path=/trunk/boinc/; revision=12807
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
- core client: fix bug in set_debt() GUI RPC
- scheduler: some of the "quick checks" in scan_work_array()
are applicable to locality scheduling also,
so they should be moved to wu_is_infeasible().
I did this for one: the check for one result
per user (or host) per WU. Should do for others.
client/
gui_rpc_server_ops.C
html/
host_edit_action.php
host_edit_form.php
sched/
sched_array.C
sched_send.C,h
svn path=/trunk/boinc/; revision=12784
e.g. distinguish between models of Intel and AMD
- Scheduler: add a quick HR check that doesn't access the DB
- Transitioner: if a workunit has >0 error results and no success results,
set its HR class to zero
From M.F. Somers.
db/
boinc_db.C,h
sched/
sched_array.C
sched_hr.C,h
transitioner.C
svn path=/trunk/boinc/; revision=12773
This cause the core client to exit immediately before or after
running a job,
letting you examine the contents of the slot directory.
- scheduler: changed max # of CPUs used in daily_result_quota
limit from 4 to 8, and make it a compile-time parameter
- feeder/scheduler: make the number of work items in shared
memory configurable (in config.xml).
The element is <shmem_work_items>
- feeder: make the size of the work item query configurable
(<feeder_query_size)
- feeder: remove code related to removing infeasible results
from shared mem.
This mechanism was never needed,
and I think a timeout would accomplish the same effect.
client/
app.C
app_start.C
client_state.C,h
cs_cmdline.C
sched/
feeder.C
sched_array.C
sched_config.C,h
sched_send.C
sched_shmem.C,h
sched_util.C
show_shmem.C
svn path=/trunk/boinc/; revision=12771
If <ended>1</ended> is included in config.xml,
this gets send to clients,
and they display a "Project ended - OK to detach" message.
client/
client_state.C
client_types.C,h
scheduler_op.C
clientgui/
VIewProjects.cpp
VIewProjectsGrid.cpp
lib/
gui_rpc_client.h
gui_rpc_client_ops.C
gui_rpc_client_print.C
sched/
sched_config.C,h
server_types.C
svn path=/trunk/boinc/; revision=12742
don't send result platform or version num if anon platform.
- back end: parse server status-related config elements
(wwww_host etc.) to avoid XML warnings
sched/
sched_config.C
sched_send.C
server_types.C
svn path=/trunk/boinc/; revision=12701
- boinc_cmd: canonicalize URLs
- user web: fix link to Top Teams
- back end: remove code related to alternate download dir
client/
cpu_sched.C
sim.C
html/
inc/
stats_sites.inc
user/
stats.php
lib/
boinc_cmd.C
sched/
file_deleter.C
sched_config.C,h
svn path=/trunk/boinc/; revision=12694
Limits total # of in-progress results per host
(independently of #CPUs)
sched/
sched_config.C,h
sched_resend.C
sched_send.C
server_types.h
svn path=/trunk/boinc/; revision=12661
we need to use " to expand $PROJECT var
- scheduler:
take work_buf_min into account in deciding whether
a result will be reported by its deadline.
- all back end programs:
better error message if can't parse config file
html/inc/
translation.inc
sched/
*.C
svn path=/trunk/boinc/; revision=12652
If set, the scheduler will use EDF simulation,
together with the in-progress workload reported by the client,
to avoid sending results that
1) will miss their deadline, or
2) will cause an in-progress result to miss its deadline, or
3) will make an in-progress result miss its deadline
by more than is already predicted.
If this option is not set, or if the client request doesn't
include a workload description (i.e. the client is old)
use the existing approach, which assumes there's no workload.
NOTE: this is experimental. Production projects should not use it.
- EDF sim: write debug stuff to stderr instead of stdout
- Account manager:
- if an account is detach_when_done, set dont_request_more_work
- check done_request_more_work even for first-time projects
- update_uotd: generate a file for use by Google gadget
- user_links(): use full URLs (so can use in Google gadget)
client/
acct_mgr.C
work_fetch.C
html/
inc/
uotd.inc
util.inc
user/
uotd_gadget.php (new)
sched/
Makefile.am
edf_sim.C
sched_config.C,h
sched_resend.C
sched_send.C,h
server_types.C,h
svn path=/trunk/boinc/; revision=12639
- Add --server_uses_workload option
(simulate server that does EDF simulation)
- Add simulation of exponential backoff when don't get work.
Otherwise it will keep asking forever.
- move non-interesting stuff to sim_util.C
- change simulator code to use ' instead of " in compiled translations
client/
makefile_sim
sim_util.C
sim.C,h
work_fetch.C
html/inc/
translation.inc
sched/
edf_sim.C
edf_sim.h (new)
svn path=/trunk/boinc/; revision=12604
the enumeration ending versus it failing.
This fixes a bug where lots of results would be
incorrectly aborted if there's a database problem.
This fix only matters if you use the <send_result_abort> config flag.
(from Kevin Reed)
- validator: add -credit_from_wu option.
This gets credit from the workunit XML
(which must have a <credit> flag).
This lets you use credit-from-WU with the standard validators
(sample_bitwise and sample_trivial)
sched/
handle_request.C
validator.C
validate_util.h
svn path=/trunk/boinc/; revision=12558
and add <platform> and <version_num> elements to <result>
(server half of multi-version changes)
- scheduler: make ssp a global; could eliminate from args everywhere
db/
boinc_db.h
sched/
feeder.C
main.C,h
sched_send.C
sched_shmem.C,h
server_types.C
svn path=/trunk/boinc/; revision=12535