(From: Steffen Möller)
- MGR: Add trace statements to help track down RemoveAt bug
- MGR: Remove static var guard, may not be needed with the SetDlgOpen()
routines blocking timer based updates. If there is a buffer overrun
hopefully it'll manifest itself in a detectable way.
clientgui/res/
linuxicon.xpm
macosicon.xpm
windowsicon.xpm
clientgui/
sg_BoincSimpleFrame.cpp
sg_TaskPanel.cpp
svn path=/trunk/boinc/; revision=24638
- web: show BBCode info in the same page, rather than target=new.
On Firefox, this opens a new tab but doesn't switch to it,
which makes it look like nothing happened.
svn path=/trunk/boinc/; revision=24622
clear project-level upload and download backoffs,
as well as RPC and individual xfer backoffs.
This was an oversight.
svn path=/trunk/boinc/; revision=24621
parsing cc_config.xml
- client: if an <exclude_cpu> element in cc_config.xml
specifies a nonexistent app, show an error msg with
a list of existing app names
- web: increase the default mem limit from 64MB to 256MB
TODO: change user_hosts.php to show N at a time
svn path=/trunk/boinc/; revision=24593
If the file "client_opaque.txt" exists on the client,
include its contents in scheduler request messages.
On the scheduler, parse this into SCHEDULER_REQUEST::client_opaque,
where it can be used by the customizable scheduler functions.
svn path=/trunk/boinc/; revision=24586
this is to support SETI@home, which ran out of result IDs
and changed the DB field type to int unsigned.
Note: eventually I'll make this change official
and change the .h types as well.
- web: put <apps_selected> tags around <app_id> elements
in project-specific prefs.
svn path=/trunk/boinc/; revision=24555
within PERS_FILE_XFER::transient_failure();
we're about to delete and free the FILE_XFER.
The transfer will be restarted in the next poll.
svn path=/trunk/boinc/; revision=24549
if multiple items have the same string.
So, in simple view task combo box:
- show % done (unique in most cases)
- remove version number
- instead of showing plan class, show "NVIDIA GPU" or "ATI GPU"
TODO: update the fraction done
svn path=/trunk/boinc/; revision=24539
where the client crashes after giving up (90 day timeout) on an upload.
I'm guessing this was caused by [24391],
which changed the order in the poll loop from
garbage_collect
file_xfers->poll
pers_file_xfers->poll
handle_pers_file_xfers
to
garbage_collect
handle_pers_file_xfers
file_xfers->poll
pers_file_xfers->poll
I don't understand why this would have caused a crash,
but so be it.
I restored the original order, but with handle_pers_file_xfers
not inside the if (!network_suspended).
- client renamed handle_pers_file_xfers() to
create_and_delete_pers_file_xfers()
- client simulator: show simulator CPU time
svn path=/trunk/boinc/; revision=24531
If we're contacting a project to report results,
only piggyback work requests for resources for which
that project is the highest priority that may have work.
- client: compute result.not_started more efficiently
TODO: continue efficiency work. There's still some quadratic stuff
svn path=/trunk/boinc/; revision=24523
(need to do this after reading the state file,
since GPU exclusions refer to projects).
- client: fix bug that added garbage <coproc> element
to <app_version> in state file when using GPU exclusions
svn path=/trunk/boinc/; revision=24522
(e.g. when editing it via the Manager).
Include only the GPUs that were specified in the original cc_config.xml,
not those detected by the client.
- client: fix bug that failed to require authorization for
GUI RPCs that are supposed to be authorized
- client: report parse errors in acct_mgr_url.xml and acct_mgr_login.xml
- fix compile warnings
- user web: in sample project_specific_prefs.inc,
get app names from the DB instead of listing them in the PHP code.
svn path=/trunk/boinc/; revision=24518
the hr_class and app_version_id fields,
with the where clause that they be either zero or the target value.
This handles the cases where
1) because of the failure of a results, the transitioner set
the field back to zero;
2) another scheduler set the field to the target value
svn path=/trunk/boinc/; revision=24513
are assumed to be for NVIDIA GPU apps;
plan class names containing 'ati' are assumed to be for AMD GPU apps.
Clauses for 'nvidia' were missing in a couple of places.
svn path=/trunk/boinc/; revision=24512
In the inner loop of scan_work_array() there are two WORKUNITs:
- the one that's part of wu_result (in the shared-mem array)
- a temp copy.
quick_check() may modify this in host-specific ways
(e.g., adjusting rsc_fpops_est or delay_bound).
This is the one we pass to add_result_to_reply().
When we reread hr_class and app_version_id from the DB,
update both structs.
svn path=/trunk/boinc/; revision=24493
(reported by Kevin Reed).
The problem: cache inconsistency.
If there are 2 results for the same WU in shared mem,
and 2 scheduler instances get them around the same time,
they can send them with different app versions.
We already fixed this problem for HR by
1) rereading the relevant WU fields while deciding
whether to send the result
2) doing a "careful update" of the WU field using a where clause
to make sure it wasn't modified in the (short) interval
since rereading it.
I fixed the HAV problem in the same way,
and merged the two mechanisms to combine the DB queries.
Also:
- The rereads are done in slow_check() (see below).
- The careful updates are done in update_wu_on_send(),
and this is called *before* doing careful updates on result fields.
That way, if the WU updates fail, we don't have orphaned results.
- already_sent_to_different_platform_careful() (sic)
no longer does DB stuff, so it's merged with
already_send_to_different_hr_class() (better name)
NOTE: slow_check() is used in array scheduling only.
Score-based scheduling uses other code,
in which this bug is not yet fixed.
Locality scheduling doesn't support HR or HAV at all.
This should be unified.
svn path=/trunk/boinc/; revision=24484
reduce its runtime from O(N^2) to O(N),
where N is the number of runnable jobs
(which can be in the thousands).
This will make the client emulator run a lot faster,
and will reduce the client CPU overhead a bit.
- API: change boinc_get_opencl_ids() so that it returns
a BOINC error code (< -100) if the app_init.xml is
missing or bad (i.e. we're running standalone),
and an OpenCL error code (> -100) if an OpenCL call failed.
svn path=/trunk/boinc/; revision=24469
NOTE: We are in the process of trying to get new artwork so that we
can handle the localization issues better.
clientgui/skins/Default/
background_image.png
svn path=/trunk/boinc/; revision=24453
radius.
- MGR: Fix project name font in the tasks area, normal size. Increase
it's weight to BOLD.
clientgui/
sg_PanelBase.cpp
sg_TaskPanel.cpp
svn path=/trunk/boinc/; revision=24450
the root configuration file when the client is NOT in sandbox mode.
Doing so could cause confusion if the volunteer uses VirtualBox for
any of their own work. If BOINC started up first it would have appeared
that their own VM's no longer existed.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24449
says whether the client is using account-based sandboxing.
Needed by vboxwrapper.
- web: don't show authenticator in Your Account page.
The problem with authenticators is that if a bad guys gets yours,
they can log in to your account even if you change your password.
Eventually we should not use them at all
(i.e. in cookies and sent to client).
- make_project: copy python stuff (e.g. bin/start) for web-only projects;
generate appropriate project.readme file for web-only projects.
svn path=/trunk/boinc/; revision=24447
so that they do what they're supposed to
(i.e. enforce resource shares)
- client: change log flag <debt_debug> to <priority_debug>
- client simulator: update REC even with large delta-t.
- client simulator: handle "no new work" apps correctly
svn path=/trunk/boinc/; revision=24429
for canceling jobs
- added program cancel_jobs for canceling jobs
- DB interface: it's not an error if update_fields_noid()
affects != 1 rows
svn path=/trunk/boinc/; revision=24413
- MGR: Change the in-memory defaults for the skin to be a light-gray
background.
- MGR: Change the dots used in the simple gui.
- MGR: Make the dots used in the simple gui skinable.
- MGR: Change the 'Project Web Sites' button text to 'Project Web Pages'.
- MGR: Add a basic 'Default' skin to be included by the various
installers
- MGR: Remove a bunch of files that are not used by the default skin
anymore.
clientgui/res/skins/default/graphic/
<various files>
clientgui/res/templates/
dotgreen.gif
dotred.gif
dotyellow.gif
clientgui/
sg_DlgPreferences.cpp
sg_ProjectPanel.cpp
sg_TaskPanel.cpp, .h
SkinManager.cpp, .h
clientgui/skins/Default/
background_image.png
clientgui/skins/Default/
skin.xml
svn path=/trunk/boinc/; revision=24412
so that if you use <http_debug> and filter by project
you don't see other projects' HTTP stuff
- client simulator: cc_config.xml is part of the scenario;
log flags are part of the simulation
svn path=/trunk/boinc/; revision=24410
(in sched_customize.cpp)
the flops_scale argument is intended to express the
GPU efficiency (actual/peak).
Pass appropriate values.
svn path=/trunk/boinc/; revision=24405
- Job scheduling: the baseline policy is to schedule based on "project priority",
which is how much processing P should receive based on resource share
minus how much it actually has received recently.
This policy tends to run jobs from the same project together,
so we modified it by adding a priority adjustment as jobs are scheduled.
The idea is that if 2 projects have about the same priority
they should split the processors.
The problem: the adjustment was too large on hosts that are on
only a small fraction of the time,
thus tending to run 1 job from each project, regardless of priority.
Solution: make an adjustment that reflects the host's actual throughput.
See adjust_rec_sched() for details.
- Work fetch: similar situation.
We were making an adjustment based on how much work the project currently has queued,
but the adjustment drowned out the project priority,
so we'd tend to always get work from the project that has least work queued.
Solution: make a smaller adjustment (-.3 ... .3)
- client: in message announcing app start, show the plan class
- client: don't show "unrecognized XML" messages for account files.
It's typically project-specific prefs that the client doesn't know about.
svn path=/trunk/boinc/; revision=24403
This will show pending uploads in the Transfers tab.
- file_upload_handler: fix message to client when can't acquire lock
- client: parse <alt_platform> in state file correctly
svn path=/trunk/boinc/; revision=24391
The problem: the choice of app version was based on
the "projected FLOPS" return by estimate_flops(av).
If usage stats exist for the host / app version,
this returns a number X such that
WU.rsc_fpops_est/X approximates the runtime of a job
using the given app version..
(If WU.rsc_fpops_est is way off, this will be correspondingly way off
from the actual FLOPS the app version will get.)
However, if there are no usage stats,
it return an estimate based on host hardware speed,
which might be 100X less.
Hence, in some cases a new app version would never get used.
Solution: choose app versions based on the values
returned by the app plan functions.
Use estimate_flops() AFTER choosing the version.
- scheduler: improve the accuracy of FLOPS estimation for GPU apps.
The "flops_scale" argument to coproc_perf
(which expresses the difference between peak GPU FLOPS
and actual FLOPS) should be used to scale GPU FLOPS
prior to calling coproc_perf(),
rather than scaling the estimate returned by coproc_perf().
- show_shmem: show have_X_apps flags
svn path=/trunk/boinc/; revision=24385
<boinc_data_dir>/projects/virtualbox so that the virtualbox configuration
can remain consistent across one or more projects.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24380
for when the job completed successfully but
one or more output files had permanent upload failures.
Show this state in web interfaces.
- sample_work_generator: check return value of count_unsent_results(),
so that we don't generate infinite work if there's a DB problem
- web: RSS feed shows news items from last 90 days, rather than 14
svn path=/trunk/boinc/; revision=24377
the boundary between days is 00:00 in server local time.
This creates a spike of jobs being dispatched
(and files being downloaded) after that time.
Solution: distribute the boundary uniformly,
using a random number determined by the host ID.
(Make sure to save/restore the seed around this,
so we don't destroy the randomness of other things)
svn path=/trunk/boinc/; revision=24353
(from Crunch3r) has a multiplier of 2.5 for cores/processor.
This is possibly because give a double-precision estimate.
But actually we want single-precision. Change it to 5. See
http://golubev.com/about_cpu_and_gpu_2_en.htm
svn path=/trunk/boinc/; revision=24349
are detected by OpenCL but not by native APIs (CUDA/CAL).
This is limited by the fact that OpenCL doesn't give
us the necessary hardware info
(ATI; wavefrontSize; NVIDIA: compute capability).
We use the minimum values for these,
so in most cases we'll be underestimating the peak FLOPS.
svn path=/trunk/boinc/; revision=24346
to match those in the clGetDeviceInfo() calls.
Principles:
- if there's already a name for something, use it.
- follow case conventions
svn path=/trunk/boinc/; revision=24344
and one of them is down.
If several downloads from the broken one fail,
we go into "project-level backoff"
and don't start downloads from either server.
(Same applies to uploads).
Solution: make project-level backoff apply only to
transfers that have already failed at least once
svn path=/trunk/boinc/; revision=24339
This caused 128KB + size of stderr loss for each job.
- client: print error message if reading stderr fails
(e.g. because of malloc failure)
svn path=/trunk/boinc/; revision=24336
don't use name as a tiebreaker.
The will typically group jobs of the same application,
and (it is believed that) things run faster when
applications are mixed.
- scheduler: bug: if a client gets host-specific prefs
(e.g. from an account manager)
it will send only the working prefs to the scheduler.
The scheduler then always sends back the DB prefs,
overwriting the host-specific prefs.
Fix: note the mod time in the working prefs,
and only send the DB prefs if they're more recent.
svn path=/trunk/boinc/; revision=24332
on the primary display. Some of the issues being reported with the screensaver
is a left over ghost image of the OpenGL display before the graphics application
was terminated because keyboard/mouse activity was detected.
clientscr/
screensaver_win.cpp
win_build/
boinc_os_ss.vcproj
svn path=/trunk/boinc/; revision=24331
Note: XML_PARSER::parse_str() doesn't currently work right
for something like <foo><a>xx</a></foo>.
It should return "<a>xx</a>".
TODO.
svn path=/trunk/boinc/; revision=24325
- client: if an app version can't be used because the GPUs it needs
are all excluded, mark it and all its results as "coproc missing"
so that they won't be looked at in scheduling logic.
svn path=/trunk/boinc/; revision=24317
in the presence of GPU exclusions.
The problem was in the job-selection phase,
which picks enough jobs to use all devices.
It was ignoring GPU exclusions, so for example on
a 2 GPU system it could pick 2 jobs from a project
for which 1 GPU is excluded,
and as a result 1 GPU would be idle.
Solution: during job selection,
keep track of GPU usage on a per-instance basis.
Select a job only if it can run on a non-excluded GPU.
- client: in computing ncprocs_excluded (which is used in
work fetch policy) don't count exclusions of non-existent devices
svn path=/trunk/boinc/; revision=24316