BOINC Trunk Change Log

Message boards : BOINC client : BOINC Trunk Change Log
Message board moderation

To post messages, you must log in.

AuthorMessage
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 25489 - Posted: 17 Jun 2009, 10:45:34 UTC

Although there are many more changes for Trunk, I am only listing the changes for the BOINC Client, Manager and such. For all (other) entries, please check the Trunk checkin notes.

List entries start from June 1 2009.

David 1 June 2009
- client: unify code for writing soft link files

Charlie 1 June 2009
- Mac MGR: Fix per-thread-locale logic on Mac.
- MGR: In Async RPC logic, change calling order for wxCondition and wxMutex from <Set Boolean, Lock, Unlock, Signal> to <Lock, Set Boolean, Signal, Unlock> to be consistent with examples in literature, hoping this might fix an intermittent hang in wxCondition::Wait().
- Mac MGR: Mac OS 10.3.9 does not have sqlite3, so we must weak-link.

David 1 June 2009
- client: if scheduler request didn't request work, don't report 0 tasks

David 2 June 2009
- client: show "est. delay" correctly in work fetch debug msgs
- client: show times correctly in rr_sim debug msgs
- client: in "requesting new tasks" msg, say what resources we're requesting (if there's more than CPU)
- client: estimated delay was possibly being calculated incorrectly because of roundoff error

David 2 June 2009
- client: add a 1e-6 slop factor in deciding if a resource is fully utilized.

Charlie 2 June 2009
- MGR: cosmetic changes to combined attach wizard, partial fix to "Forgot password" link for account managers.

Charlie 3 June 2009
- MGR: finish changes to combined attach wizard, change "Forgot password" link for account managers to a link to AM's home page, add static text that you must register at web site before proceeding or go to web site for forgotten password.

David 3 June 2009
- client: include device number in message describing NVIDIA GPU, and call it "NVIDIA GPU" rather than "CUDA device". fixes #879

David 3 June 2009
- client: tweak messages

David 3 June 2009
- client: when parsing app_info.xml, make sure coprocessors are present. fixes #911

Charlie 3 June 2009
- GR Installer: Update make_GridRepublic.sh script for new default screensaver.

Charlie 3 June 2009
- client: Fix missing argument in printf statements.

David 3 June 2009
- fix to the above

Rom 3 June 2009
- MGR: Accept Unicode input for usernames and password in the manager now that the manager is Unicode enabled. Input will show up as UTF-8 strings in the CC and project. Fixes #452

Rom 4 June 2009
- MGR: Fix bug in browser cookie detection code where firefox v3 cookie detection was returning true even for cookies that don't exist.

Rom 4 June 2009
- MGR: Add some basic validation for account manager cookie detection.

David 4 June 2009
- GUI RPC: add active_only option to get_results() RPC

David 4 June 2009
- client: read app_info.xml's AFTER scanning GPUs. Otherwise we'll discard all GPU apps and results.

Charlie 4 June 2009
- MGR: Fix compile errors.
- MGR: Remove authenticator validity test from detect_cookie_safari() since it is now used for additional cookies; this had already been done for other browsers.

Charlie 5 June 2009
- MGR: CBOINCClientManager::ProcessExists() finds the process by name if we don't have a pid (Mac, Linux) or process HANDLE (Windows). On Mac and Linux, it returns the pid if the process was found.

Charlie 5 June 2009
- MGR: Use code like get_client_mutex() to determine if client is running. New CBOINCClientManager::KillClient() uses process name to kill client if we don't have a pid (Mac, Linux) or process HANDLE (Windows).
NOTE: Windows implementation not yet finished.

Charlie 5 June 2009
- MGR: Implement CBOINCClientManager::KillClient() and IsBOINCRunning() for Windows.
NOTE: I have confirmed that the "ps -a -x -c -o command,pid" command as used in IsBOINCRunning() should works in Ubuntu under VMWare, but it needs to be tested on other Linux platforms.

David 8 June 2009
- GUI RPC: include hostid in PROJECT

David 8 June 2009
- Manager: show host ID in project properties

Charlie 8 June 2009
- Mac MGR: In Async RPC logic, use posix mutexes and conditions instead of wxWidgets implementations on the Mac, as this appears to fix an intermittent hang in wxCondition::Wait().

Rom 9 June 2009
- DIAG: Policy change: Only include the BOINC symbol store for BOINC binaries. The old policy was kept around as a backwards compatibility thing before a new flag was added to the diagnostics to identify project applications.

Charlie 10 June 2009
- Mac screensaver: Add support for ProgressThruProcessors (PTP) branding.
- Mac PTP Installer: Add support for ProgressThruProcessors (PTP) installer.

Charlie 10 June 2009
- MGR: use branded Manager name in async RPC Please Wait dialog.

Charlie 10 June 2009
- Mac screensaver: Change "ProgressThruProcessors" to "Progress Thru Processors".
- Mac PTP Installer: Change "ProgressThruProcessors" to "Progress Thru Processors"
- New script to convert BOINC installer to Progress Thru Processors installer.

Charlie 11 June 2009
Mac: Fix script to properly handle UTF-16 encoded InfoPlist.strings files.
Mac: Update copyright date in InfoPlist.strings files to 2009.
Rom 11 June 2009
PTP: Introduce 'Progress Thru Processors' to the Windows build environment. Use GridRepublic skin until the new one is available.

Rom 11 June 2009
PTP: Add the 'Progress Thru Processors' screensaver to the source tree.

Rom 11 June 2009
- SCR: Update default values per BOINC defaults.
- PTP: Add files needed by the installer(s).

Charlie 11 June 2009
- Mac MGR: strip /n from command field of PROCINFO struct so <exclusive_app> log flag works properly on Mac.
- MGR: Change CBOINCClientManager::KillClient() to get client pid from procinfo_setup() on all non-Windows platforms.
- SCR: restore boinc.jpg file erroneously removed from SVN.

Charlie 12 June 2009
Mac Sandbox: check_security() writes path of bad file to stderr for some error codes.

Rom 12 June 2009
- WINSETUP: Change the install validation code so that it reads the MSI database to determine what executable names to check instead of hard coding them. BOINCMGR is renamed to Progress Thru Process or in the case of GridRepublic it would be GridRepublic Desktop.

Rom 12 June 2009
- PTPSCR: Updates from Carl

Rom 12 June 2009
- MGR: Introduce the notion of a Return URL to the attach to account manager wizard. When successfully attached the account manager can have the manager launch a browser to a given URL by way of a cookie. It only works if the logon credentials were also given to the manager by way of a cookie.

Rom 12 June 2009
- MGR: Introduce the cookie detection failure URL to the acct_mgr_logon.xml file. If the cookies cannot be found provide a hyperlink control on the AcctountInfo page in the wizard which will point to a fallback URL the user can go to to find out what logon credentials to use.


Rom 12 June 2009
- MGR: The ReturnURL cookie is optional, not required.

Charlie 12 June 2009
- MGR: update Wizard text to fit in dialog on Mac and to be more general.
- Sandbox: Fix permissions for branded screensaver coordinators.
- Mac Installer: check that brandID is valid.
- Mac Uninstaller: don't delete BOINC Data directory or users' Manager settings. Check in Rez source for uninstaller resources instead of resource file, to make it easier to modify on newer versions of XCode.

Charlie 13 June 2009
- MGR: Wizard retries acct_mgr_rpc() if acct_mgr_rpc_poll() sets ERR_RETRY.

Rom 13 June 2009
- MGR: Fix browser cookie detection on Windows machines where UAC is turned on. It appears it has never worked, and I imagine it would affect 70% of our Windows Vista and Windows 7 user base.

Rom 13 June 2009
- MGR: Expand on Charlie's last checkin to include the rest of the polling RPCs in the wizard. The polling RPCs would return ERR_RETRY when the CC was in the middle of some other GUI_HTTP op (version check, project list download).

Charlie 14 June 2009
- MGR: When automatically running Synchronize AM Wizard or Manager launch, hide the main window only if it was not previously shown.
- Mac Installer: check in a copy of GR / PTP signing key with UNIX / Mac line endings.

Rom 14 June 2009
- INSTALL: Make sure both installers have the cookie required flag so that the correct information is displayed on the AccountInfo page in the Wizard, if and when a browsers cookie could not be detected.

Charlie 15 June 2009
- MGR: If LOCKFILE doesn't already exist, core client isn't running so skip further testing. This avoids a very rare possible race condition and is more efficient.

David 16 June 2009
- client: don't require that file upload URLs contain "file_upload_handler".

David 16 June 2009
- manager: compile fix

David 16 June 2009
- client: prepend rather than append to LD_LIBRARY_PATH;
on Mac, change DYLIB_LIBRARY_PATH also.

Charlie 16 June 2009
- MGR: Compile fix of Rom's fix to David's compile fix.

David 16 June 2009
- compile fixes for Linux
ID: 25489 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 25561 - Posted: 20 Jun 2009, 8:13:39 UTC

David 17 June 2009
- SS: remove unused func

Rom 18 June 2009
- MGR: Fix browser cookie lookup bug I introduced when I added support for looking up cookies in Internet Explorer low rights environments. InternetGetCookie expects the hostname and domain name to be presented as URLs.

- MGR: Fix the case where user visits Grid Republic with IE 7 and has a space character in their username. IE6 and below kept the space as part of the filename, IE7 and above replace the space with an underscore.

- MGR: Massive wizard cleanup
o Remove diagnostic framework, it wasn't being used anymore and basically cluttered things up.

- Remove the notion of the Account Manager Remove wizard, it hasn't ever been used.

- Simplify the welcome page

- Trim down the height of the wizard by hiding the new cookie controls on the Account Info page. The wizard needs to stay compatible with small displays.

- MGR: Only display the 'This is not a BOINC project' on an HTTP 404 error. For a gethostbyname, xml parsing, and socket connect error display the 'project is temporarly unavailable'.

Rom 19 June 2009
- MGR: Fix a long standing bug where the project list control for the account manager info page and the project info page was not consuming available screen space. Previously we hacked around it by setting an explicit size.

Note: this works on Windows, I don't yet know about Mac and Linux.

- MGR: Make the Account Manager Properties page and the Project Properties page the start for all automated wizard processes so that we can successfully handle the need to check for proxy servers. When directly advancing to the Processing pages the proxy server checks were being skipped.

- MGR: Add some more smarts to the terms of use page which should advance to the processing pages and skip the Account Info page when the desired credentials are already known.

- WINSETUP: Provide a mechinism in the installer where the installer can override the previous stored state from a previous installation.

NOTE: Needed because PTP isn't going to be supporting 'Application execution mode', at least not with the initial installer.

- MGR: Keep the wizard state machine from prematurly moving on without checking network connectivity and whether credentials have been detected.

- Mac Install: Fix an off by one error reported during a security audit

Charlie 19 June 2009
- MGR: Fix crash bug in Account Manager Wizard

- Mac: fix bugs in GR and PTP build scripts.

- Add comments to build scripts

David 19 June 2009
- install: don't install std_fixes.h or msg_queue.cpp

- remove some unused code

- scheduler: small code cleanup
ID: 25561 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 25830 - Posted: 1 Jul 2009, 11:33:22 UTC

Rom 23 June 2009
- MGR: First stab at making the ProjectList control keyboard navigatable. Tab order isn't quite right yet for the Project Info page or the Account Manager Info page, but that'll be another commit. refs #442

Charlie 23 June 2009
- PTP: check in new PTP Mac icons and images.

David 26 June 2009
- client: when suspending a GPU job, always remove it from memory, even if it hasn't checkpointed. Otherwise we'll typically run another GPU job right away, and it will bomb out or revert to CPU mode because it can't allocate video RAM

Charlie 27 June 2009
- Mac: Fix missing file name characters in script to make PTP installer

David 27 June 2009
- fix typo in schema

Rom 29 June 2009
- MGR: My first attempt to handle the project list control was turning into a mess and becoming very complicated, as my former mentor used to say "if you are having to try too hard, you are doing it wrong."

Reimplement the project list control as a wxHtmlListBox which handles keyboard navigation correctly and allows us to have variable height list items. Another perk is the ability to detect when different HTML elements are clicked on which might be useful for anonymous attach at some point in time in the future.

- Quick updates

- WINSETUP: Add the PTP executable to the list of processes to terminate when setup is launched.

- Remove fake skin

Charlie 29 June 2009
- Mac Uninstaller: add blank lines between items user should delete

- MGR: fix compile breaks on non_Windows systems

- Mac Uninstaller: fix cosmetic bug

Rytis 30 June 2009
- Sched: config option not to store stderr_out if exit_status==0 (to save on DB size). With help from Nicolas Alvarez.

Rom 30 June 2009
- MGR: Remove project list randomization, sort on name.

- Group project list structures together.

- MGR: Previous sorting method wasn't working, use a sort function pointer instead.

David 30 June 2009
- client: record the time results are received. Process non-EDF GPU jobs in this order.

- manager tweak
ID: 25830 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 25929 - Posted: 9 Jul 2009, 22:27:22 UTC

David 1 July 2009
- API: add boinc_elapsed_time() to get elapsed time since start of episode; add APP_INIT_DATA::starting_elapsed_time to get elapsed time from previous episodes

David 6 July 2009
- fix client simulator

- web: if DB server down, say so

Charlie 7 July 2009
- Mac Installer: use escaped form of brand name when needed

- Mac Installer: use escaped form of branded screensaver name when needed

David 7 July 2009

- GUI RPC: add get_message_seqno() RPC. fixes #931

Charlie 8 July 2009
- Mac Installer: use escaped form of branded screensaver name when needed

- Mac Installer: If needed, set screensaver for all users after getting approval

- Update Mac ReadMe files for installer changes

- Mac Installer: fix bug in scripts to create branded installers

David 8 July 2009
- Add check for running as remote desktop, in which case CUDA won't run.

- compile fixes
ID: 25929 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 26062 - Posted: 16 Jul 2009, 23:27:40 UTC
Last modified: 17 Jul 2009, 22:28:13 UTC

David 9 July 2009
- client: error if a <file_info> in app_info.xml has any URLs

- client: don't write file_infos with no URLs to client_state.xml for anon platform project; they must be from app_info.xml

David 10 July 2009
- client: restored code for project-wide backoff on file uploads and downloads.
I originally added this on 30 Sept 2005 and disabled it 2 weeks later because there were reports of problems.
However, we need this functionality (e.g. on GPU hosts with hundreds of files to upload, we need to back off after a few failures, not try all of them).
I added messages (<file_xfer_debug>) so you can see what's going on. Fixes #932.

- client: if malloc fails in MFILE writes, exit.
We don't check the return values of printf() anywhere, and it's dangerous for the client to continue if it thinks something got written that didn't. Fixes #281

Rom 15 July 2009
- client: Remove backwards compatible CPU feature detection code since we no longer support Win9x

- clientlib: Remove backwards compatible mouse and keyboard activity detection code since we no longer support Win9x

David 16 July 2009
- client: code cleanup for project-level file xfer backoff

- client: fix backoff logic

- client/manager/GUI RPC: show project-level backoffs

- client: changed file upload logic

Old: each upload attempt consists of two HTTP requests:
-- the 1st to get the current file size on server,
-- the 2nd to upload the remainder of the file.

Problem:

a) if the upload server is overloaded and requests are succeeding with probability X, then the chance of both requests succeeding is X2. So e.g. a per-request success rate of 0.1 becomes an overall success rate of 0.01.

b) the "get file size" request can be avoided in some cases.

New:

If we've already queried the file size and haven't uploaded any additional bytes, don't query the file size again.

- client: if file < 8KB, upload it in its entirety and skip size check

- client: (refinement to previous checkin) don't skip file size check if file has multiple upload URLs. We might have uploaded different amounts on different servers.

- client: change the way a resource's "estimated delay" (passed to server for crude deadline check) is computed.

Old: estimated delay is the interval for which the resource is fully used (i.e., all instances busy).

Problem: this may cause unnecessary project starvation.
example: 1 CPU machine, has a month-long CPDN job with a 1-year deadline (it's not in deadline trouble). Then the CPU estimated delay will be 1 month, and the client won't get any work from projects with deadlines shorter than 1 month.

New: estimated delay is the latest time at which the resource is fully used and is being used by at least 1 job that is projected to miss its deadline under RR.

Note: this isn't precise, but I don't think we can improve it much without getting a lot more complex.

David 17 July 2009
- client: 2nd try on my last checkin.

We need to estimate 2 different delays for each resource type:
1) "saturated time": the time the resource will be fully utilized (new name for the old "estimated delay"). This is used to compute work requests.
2) "busy time": the time a new job would have to wait to start using this resource. This is passed to the scheduler and used for a crude deadline check.
Note: this is ill-defined; a single number doesn't suffice. But as a very rough estimate, I'll use the sum of (J.duration * J.ninstances)/ninstances over all jobs that miss their deadline under RR sim.
ID: 26062 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 26882 - Posted: 29 Aug 2009, 17:07:01 UTC

Rom 27 July 2009
- client: Remove Win9x compatibility code from memory detection routine.

- MGR: Special case ERR_GETHOSTBYNAME errors in the wizard, majority case for DNS failures suggest that the user might need a proxy to be defined instead or this project is unavailable or this account manager is unavailable.

- client: There was already a way to check if the reference site check was in progress, I missed it through my first pass through the manager code while trying to debug the proxy problem get_cc_config returns NETWORK_STATUS_LOOKUP_PENDING which then causes the manager to call get_cc_status again.

- MGR: Don't make ERR_FILE_NOT_FOUND part of the requirements to detect the need for a proxy server.

MGR: Fix an endless loop during wizard creation, any automatic true conditions in the GetNext() GetPrev() logic causes the wizard to traverse the page and then look for the next page.

David 28 July 2009
- client (Linux): when launching apps, put a relative path to the executable (../../projects/x/y) into argv[0], not just the executable filename. Apparently the new NVIDIA drivers have a bug that cause CUDA apps to crash unless this is done.

- client: if an HTTP op fails within 30 sec of client startup, don't skip the reference site check. Instead, defer the reference site check until 30 secs after startup. Also, if during this interval (when the check has been requested but not started) return net status as LOOKUP_PENDING

Rom 28 July 2009
- MGR: Re-enable the ability for the manager to detect a temporary name failure vs needing a proxy server or something like that.

David 29 July 2009
- client: to enumerate CUDA devices, use the functions in libcuda.so (which ships with driver) rather than libcudart.so (this eliminates the need to bundle libcudart.so with the client).
The functions are documented here.

Rom 29 July 2009
- client: Initial swipe at automatic proxy server configuration detection on Windows. Fixes #35

David 30 July 2009
- slight code cleanup

David 31 July 2009
- file upload handler: don't treat zero-length file as an error!
(This bug has been there since 28 Oct 2004)

- GUI RPC and manager: include project backoff in FILE_TRANSFER, so that manager gets up-to-date value

Rom 31 July 2009
- Update the software stack to use the new Microsoft C Runtime Library that was pushed down a day or two ago. (8.0.50727.4053)

- Upgrade to wxWidgets 2.8.10 for Windows

Rom 1 August 2009
- Begin refactor process for Windows auto proxy detection

- Quick Updates to win_build

Rom 3 August 2009
- client: refactor the CC startup process, move majority of the windows code into sysmon_win.cpp, .h

David 3 August 2009
- minor code cleanup

Charlie 3 August 2009
- client: fix compiler warning (too few args for print format)

- Mac: fix compile breaks

Charlie 4 August 2009
- Mac client: prevent crash and show warning message if CUDA driver version < 2.3.

Charlie 7 August 2009
- MGR: Implement "Show active tasks / Show all tasks" button

- client: More efficient implementation of active_only flag in get_results RPC

- client: fix compiler warnings "call will abort at run time"; Sandbox: add casts

- client fix crash bug introduced by changing PROXY_INFO strings from char[] to std::string

- MGR: Test changes to avoid non-stop RPC Wait dialog when client is heavily loaded

Rom 7 August 2009
- client: Second pass through the automatic proxy detection code.

During the first pass we learned that the whole process of proxy detection on Win XP machines could take a few seconds even with no proxies to be detected, now the proxy detection code is executed in the same thread that is monitoring for power change events.

David August 12 2009
- GUI RPC: fix memory leak in authorize()

David 13 August 2009
- Add new coproc code.

- client (Unix): fix bug that caused GPU reservation to not work. The problem: we were doing the reservation after the fork(), so that the data structure it changed was the app's, not the client's.

- start: don't print "XML parse error" message if run_state file doesn't exist (e.g. when start new project)

David 14 August 2009
- client: try to fix situations where the scheduler runs GPU jobs in a seemingly random order, or preempts GPU jobs needlessly. The change has two parts:
1) sort the "results" vector by received_time, so that the RR simulation processes GPU jobs FIFO.

2) in the CPU scheduler (earliest_deadline_result()) instead of choosing the earliest-deadline GPU job that misses its deadline, pick the earliest_deadline GPU from a project that has a deadline miss for that GPU type (this is what's done in the CPU case)

- client: fix bug where if you have an exclusive app, then remove it from cc_config.xml and do "update config", it doesn't go away. Need to clear the list before parsing.

- client: don't try to maintain GPU work for all projects, since use FIFO rather than RR schedling for GPUs

- client: in the final stage of CPU scheduling, give preference to multi-threaded jobs. Avoid running N-1 1-thread jobs and 1 N-thread job on N CPUs

- client: change file transfer giveup time from 14 to 90 days

- client: ATI GPU detection code (from Crunch3r)

- client: clean up ATI code and make it work (or at least compile) under Linux

- compile fixes

David 15 August 2009
- client: ATI tweaks

David 17 August 2009
- client: add ATI support to job scheduling and work fetch

- scheduler: add support for ATI GPUs

- client: fix calculation of ATI flops

- client/manager: add ATI stuff to GUI RPCs and manager display

David 18 August 2009
- client: fix bug that shows ATI version incorrectly

- manager: allow 24:00 to be used in advanced prefs dialog (from Ian Hay; fixes #357)

Charlie 18 August 2009
- Mac SS: Changes for compatibility with OS 10.6

David 19 August 2009
- client and scheduler: lay the groundwork for "fractional coproc jobs", e.g. the Milkyway@home ATI app, of which we can typically run 2 or 3 instances at once on a GPU.

Changes include:

* In APP_VERSION, don't use a COPROCS to represent the GPU requirements; just use doubles ncudas and natis.
* sufficient_coprocs() etc. are no longer members of COPROCS.
* in HOST_USAGE, ncudas and natis are doubles.
* in scheduler request, req_instances is now a double.

This checkin doesn't include the job scheduling logic, i.e. assigning jobs to GPUs. That will follow.

- client: finish the implementation of fractional coproc jobs.

* different data structure for keeping track of coproc usage; instead of COPROC having per-instance pointers to ACTIVE_TASK, ACTIVE_TASK now has an array of device number indices for each instance that it's using.

* in enforce_schedule(), we call a new function assign_coprocs() that decides what coproc instances each job will use, and prunes jobs for which we can't get an assignment. This function embodies lots of subtlety.

* coproc_cmdline() no longer deals with reserving instances; it just has to generate the --device X cmdline

- fixes to coproc stuff

Rom 19 August 2009
- Quick Updates

Charlie 21 August 2009
- Mac: changes to release script to add x86_64 screensaver for Snow Leopard OS 10.6

- Release BOINC Mac version 6.10.0

- Mac client: use rss keyword not rsz in ps command for OS 10.6 compatibility.

Rom 21 August 2009
- client: Attempt to prevent a crash via a C++ exception by checking for a -1 index before attempting erase the rest of the proxy list.

David 22 August 2009
- client/libs/samples: remove "#define read _read" etc. from boinc_win.h
These cause problems when "read" is a member name, etc. Do these #defines, conditioned on _MSC_VER, in the files that actually need them.

- don't include boinc_win.h from parse.h. principle of minimal inclusion

David 24 August 2009
- update_versions: if app version files already exist in download dir, make sure they're the same (i.e., enforce file immutability). TODO: do this for input files too

- client: check return values from CUDA device detection functions

- client: use the right library name for ATI on Linux

- client: check return values from ATI device detection functions

- client: in parsing <coproc> elements in <app_version>, use a new type COPROC_REQ for which the count field is a double. Otherwise fractional GPU jobs don't work.

David 25 August 2009
- client: when writing XML, entity-encode the following fields:
FILE_INFO::url
HOST_INFO::p_vendor, p_model, p_features, os_name, os_version

The following fields are already entity-encoded:
PROJECT::user_name, team_name
APP_INIT_DATA::user_name, team_name

PROXY_INFO
user names and passwds

These are (as far as I know) the only fields that can contain special chars.
This is now documented in: http://boinc.berkeley.edu/trac/wiki/XmlNotes

- client: XML_PARSER::parse_str() now does xml_unescape(), same as ::parse_str().

Charlie 26 August 2009
- MGR: on Linux, accept 2 optional args: -clientdir or -e and -datadir or -d, use when launching client

- MGR: on Linux, check list of running processes from procinfo_setup() to determine if BOINC core client is running

- MGR: Bug fixes for Linux

Charlie 27 August 2009
- MGR: More bug fixes for Linux

David 28 August 2009
- reverted changes to PROXY_INFO which broke various things

- compile fixes

- client: fix work fetch log message for ATI GPU

- fixes to proxy autodetect

- client: NVIDIA offers an API which tells you whether a GPU is running a graphics application. Change the semantics of the "don't use GPU while computer in use" pref to "don't use a GPU that's running a graphics app while computer is in use". This will increase GPU utilization on multi-GPU systems.
ID: 26882 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 27275 - Posted: 11 Sep 2009, 7:01:51 UTC

David 29 August 2009
- client: various bug fixes in job scheduling and work fetch for ATI. From Crunch3r.

David 30 August 2009
- client: if project is anonymous platform, set the overall work req to the max of the requests for different resource types. Otherwise projects with old schedulers won't send us work.

David 31 August 2009
- scheduler: fix messed-up deadline check logic.

Old:
1) check deadline based on wu.delay_bound
2) in add_result_to_reply(), potentially modify wu.delay_bound, e.g. because of retry acceleration problem: reducing delay bound may cause deadline miss

New:
1) new function get_delay_bound_range() (called from wu_is_infeasible_fast()) returns optimistic and pessimistic delay bounds. Retry acceleration logic is here.

2) check deadline based on optimistic bound; if that fails, check based on pessimistic bound. Set wu.delay_bound to the one that worked.

Notes:
* get_delay_bound_range() needs result priority and report deadline, and it's called before we read the full result. So add these items to WORK_ITEM and WU_RESULT.

* get_delay_bound_range() could be customized for project-specific deadline policy.

* add_result_to_reply() was becoming a toxic waste dump. Deadline-related stuff should have been factored out in any case.

Eric 31 August 2009
- Fixed problem that prevented stack backtrace from being printed after segfault on linux.

Charlie 31 August 2009
- Mac installer: add logic for setting BOINC as screensaver under OS 10.6

Rom 1 September 2009
- client: autoproxy detection should happen at startup too.

- client: when autoproxy detection is in progress don't attempt to use old values.

- client: user defined proxies should take presidence over automatically detected ones.

- lib: Re-implement the assignment operator for proxy_info, http_curl.cpp uses it to clone the proxy information for each http op. See set_proxy();

- client: Use HTTP_OP::pi to avoid a crash when using a proxy. libcurl uses the proxy information after the PROXY_INFO struct in setup_proxy_session() had been popped off the stack.

David 1 September 2009
- client:

* remove HTTP_OP::pi; just use gstate.proxy_info
* remove HTTP_OP::set_proxy()
* remove PROXY_INFO::operator=; struct assignment works

Eric 1 September 2009
- Fix for static client (--enable-client-release) builds

Charlie 1 September 2009
- Mac Sandbox: Security fixes for Mac OS 10.6 Snow Leopard

David 2 September 2009
- scheduler: put client version in host.serialnum

- web: parse serialnum correctly

- client: fix to [18945]; we only want to max the overall request with a GPU request if project is anonymous platform AND it has an app for that GPU type.

- client: report overall work request as well as per-resource-type requests.

- client: add <sched_op_debug> msg for ATI work request

- WIN: Remove unused references to glaux.h and glaux.lib

- client: fix crashing bug in proxy autodetect

- client: fix log messages about scheduler RPC work req

- client: missing reset for ATI debt accounting

David 3 September 2009
- client: fix bug where client runs too many CPU jobs

- scheduler and back end: add new fields to result table:
elapsed_time: the elapsed time (runtime) as reported by client flops_estimate: the app's estimated FLOPS as reported by app_plan() app_version_id: the DB ID of the app_version used (or -1 if anonymous platform).

TODO: show these in the web interfaces, and use them where appropriate.

- client: improve the estimation of "busy time" (see 17 July checkin).
If you have 2 CPUs and a 1-day job in EDF mode, the busy time should be zero, not .5 days.

Add a class BUSY_TIME_ESTIMATOR that makes a somewhat better (though still fairly crude) estimate.

David 5 September 2009
- client: in choosing GPU jobs in FIFO order, use job name as tiebreaker if received times are the same. This makes the order deterministic.

- web: show elapsed time and CPU time, and show app version info, in result display

- client: update of time stats was broken by [trac]changeset:17166[/trac]

- web: remove usage of ereg_replace()
Fixes [trac]#787[/trac]. From Nicolas Alvarez.

David 8 September 2009
- client: add code for faking ATI GPUs

- client: cap time_stats dt at 2 weeks, so people upgrading to 6.10 won't get big drop in on_frac.

David 9 September 2009
- client: fix bug in RR simulation:
start only enough jobs to fill CPUs per project, not all the CPU jobs at once.
I'm not sure how much difference this makes, but this is how it's supposed to work.

- client: if app_info.xml doesn't specify flops, use an estimate that takes GPUs into account.

- client: if it's been more than 2 weeks since time stats update, don't decay on_frac at all.

David 10 September 2009
- client: save space in req msg. Didn't make much difference.

Charlie 10 September 2009
- client: don't display processor cache if we don't know it; skip ATI stuff on Macs.
ID: 27275 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 27481 - Posted: 18 Sep 2009, 18:10:04 UTC
Last modified: 18 Sep 2009, 18:11:54 UTC

David 11 September 2009
- client: in startup msgs, show resource shares, don't show prefs details

Charlie 11 September 2009
- Mgr: skip exit confirmation dialog if user pressed emergency Exit button on AsyncRPCDlg

David 12 September 2009
- client: fix bug in FIFO selection of coproc jobs (senility setting in?)

- client: add <fraction_done> to boinc_task_state.xml

David 13 September 2009
- client: change order in poll loop so that:

1) job finishes
2) job gets marked as "ready to report"
3) scheduler RPC is initiated
Hopefully this won't have an unintended side-effect

Charlie 16 September 2009
- Mac installer: ask user whether to allow non-administrative users to run and control BOINC

David 16 Sept 2009
- client: tweak policy for device busy time. Should eliminate some spurious "job won't complete by deadline" msgs.

- client and scheduler RPC: add optional <cpu_backoff>, <cuda_backoff>, and <ati_backoff> elements to scheduler reply. These specify backoffs for the resource types, overriding the existing backoff mechanism. Projects can supply these if they don't have apps of a particular type and don't want to get periodic requests for them.

- client: cap project-supplied backoffs at 28 days

- client: anal-retentive alphabetization

Charlie 17 September 2009
- Mac installer: create a new command-line tool AddRemoveUser; updated ReadMe file

- Remove unused framework QTKit from project

David 17 September 2009
- client: if project-supplied backoff > 28 days, cap rather than ignore.

- client: don't print error message if output file with <copy_file> attribute is missing. That's the app's problem, not BOINC's

- client: fixed failure to initialize CPU backoff; leads to huge CPU backoff. Cap backoff when read statefile.

David 18 September 2009
- client: oops, backoff time is absolute not relative

- client/API: add autosetup proxy info to init_data.xml

- client: in choosing coproc jobs to run (FIFO) give priority to whether job is already running. This addresses a bug where several jobs are returned by sched RPC, and one with a lexicographically greater name happens to finish downloading first.

- client: comment out [trac]changeset:18942[/trac], which changed the meaning of "don't use GPUs while computer is in use" to "don't use GPUs running graphics apps while computer is in use" for NVIDIA GPUs. NVIDIA's API for seeing if a GPU is running a graphics app doesn't seem to reflect GPU use by the OS.

Rom 18 September 2009
- client (Unix): fix bug that caused GPU reservation to not work.
The problem: we were doing the reservation after the fork(), so that the data structure it changed was the app's, not the client's.
ID: 27481 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 27588 - Posted: 26 Sep 2009, 0:49:23 UTC
Last modified: 26 Sep 2009, 10:25:00 UTC

David 18 September 2009
- Unix build: use autoreconf

- client: fix bug introduced in [19035] that causes wrong nidle instances (and resulting work fetch problems)

- Unix build: don't touch svn_version.sh if it hasn't changed, to avoid remake of sched/ (from Gabor Gombas)

- client: fix compiler warning

- client: if a file fails verification, delete it.

David 19 September 2009
- Unix build: delete some unused files

David 21 September 2009
- Unix build fix

- scheduler: don't scale by #CPUs for non-CPU-intensive projects

- work fetch tweak

- client: tweak CPU scheduling policy to avoid running multithread apps overcommitted. Actually: allow overcommitment but only a fractional CPU (so that, e.g., we can run a GPU app and a 4-CPU app on a 4-CPU host).

David 22 September 2009
- client: fix bug that caused unstarted coproc jobs to preempt ones already running.

The problem: we considered a job as started if it has an ACTIVE_TASK. However, we were creating ACTIVE_TASKS for jobs before deciding to run them, because we needed a place to store the coproc reservations.

This caused the above bug, and also had the undesirable effect of creating slot directories before they're needed. Solution: store coprocessor reservations in RESULT rather than ACTIVE_TASK.

- client: extra debug msgs (remove when done)

- client: fix preemption bug, this time fer sure!

David 23 September 2009
- client: removed extra msgs

- client: on Linux, run CPU-intensive jobs with the SCHED_BATCH scheduler.
Improves interactive response of system when jobs running. From Clive Messer.

- Unix builds: make sure we have libtoolize. From Gabor Gombas

- client: revert [trac]changeset:19110[/trac]: don't delete files that fail verification; they might be partly downloaded.

- scheduler: add a plan class "ati13186" for apps that require CAL version 1.3.186 or greater.

- scheduler: change it to:
"ati" means CAL 1.2 or less (Catalyst 9.1 or less)
"ati13" means CAL 1.3 or greater (Catalyst 9.2+)


Rom 23 September 2009
- scheduler: bug fix.

David 24 September
- client: in GPU enumeration, separate warning msgs from GPU descriptions. Show warning msgs only if log_flags.coproc_debug

- client: for ATI enumeration, use only aticalrt.dll (amdcalrt.dll is old version w/ funky DLL names)

- client: make GPU enumeration warnings more consistent (e.g., "NVIDIA" instead of "CUDA").

- scheduler: get rid of ati13 plan class. Require 1.4+ driver for plan class ati.

Rom 25 September 2009
- client: Add support for checking for both amd* prefixed CAL libraries and ati* prefixed CAL libraries.

- scheduler: redefine ati class plans again.
ati: CAL 1.0+, amd* prefixed libraries
ati13amd: CAL 1.3+, amd* prefixed libraries
ati13ati: CAL 1.3+, ati* prefixed libraries
ati14: CAL 1.4+, ati* prefixed libraries

- lib: fix build break.

- Commit missing piece of code, I had written them before the first commit.

- scheduler: setup priorites for the ATI plan classes

- client: report the different Windows 7 and Windows 2008 "R2" correctly.

- win_build: In the future be very careful about with project you choose to be the basis for a new executable. boincsvcctrl.exe was overwriting the PDB file for boinc.exe which causes all call stack handling code for boinc.exe to stop working.

David 25 September 2009
- scheduler: fix app_plan() bug, improve ATI-related msgs

- client: improve ATI description strings (from Andreas)

- screensaver: added some comments

- scheduler: fix app_plan_uses_gpu()

- code shuffling; not significant

- client: fix crashing bug in GPU message display

- client: show a couple more config flags on startup
ID: 27588 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 27750 - Posted: 4 Oct 2009, 7:57:27 UTC

David 26 September 2009
- client: fix bug in CPU prefs enforcement: enforce "suspend if no recent input" and "exclusive apps" only if overall mode is RUN_MODE_AUTO (run according to prefs)

David 27 September 2009
- client/scheduler/web: add per-project preferences for whether to accept CPU, NVIDIA and ATI jobs. These prefs are shown only where relevant:
e.g., only for processor types for which the project has app versions, and if it has versions for only one type, no pref is shown.

These prefs affect both client and scheduler. The client won't ask for work for a device blocked by prefs, and the scheduler won't send it.

This replaces earlier optional project-specific prefs for "no CPU jobs" and "no GPU jobs". (However, these prefs continue to be honored on the server side).

- client: if NVIDIA driver is unknown, say that rather than 0

David 28 September 2009
- client: fix crash with <ncpus>0</ncpus>

David 30 September 2009
- client: if downloaded project list file is garbage, ignore it.

- all: accept <foo /> as an XML bool

Rom 30 September 2009
- client: Apparently it is valid for the autoproxy to return successful API completeion but a null proxy list. Check for the null instead of crashing.

Rom, 1 October 2009
- client: only support one of the ati13* plan classes at a time.
A couple users had not updated their amdcal* runtime libraries after upgrading catalyst drivers. This was leading to crashes of the project applications when work was supplied looking for the old DLL names.

- client: fix a handle leak I just introduced. (From: Andreas a.k.a Gipsel)

- lib: Fix memory/resource leak. (From Nicolás Alvarez)

- lib: Add additional ATI descriptions.

- lib: Fix some inaccurate ATI capabilities in certain cards. (From: Andreas a.k.a Gipsel)

- lib: Fix memory/resource leak. (From Nicolás Alvarez) (part 2?)

David 2 October 2009
- client: restore calDeviceGetInfo(), add its info to COPROC_ATI struct (some plan class might need to know this).
Code cleanup.

- client: better behavior if a GPU goes away:
1) if an APP_VERSION is missing a coprocessor, don't delete it and its files. (If the coprocessor returns, we won't need to re-download)
2) if a RESULT uses an app version that is missing a coprocessor, abort it (rather than deleting it). The client will report the result on the next scheduler RPC, and the server will make a new instance.

- client: fix bug where if you change project "no CPU/NVIDIA/ATI" prefs and update, the change wouldn't take effect until client restart.

- client: fix bug in enforcement of "no CPU/NVIDIA/ATI" prefs

- client: if GPU is removed while jobs in progress, don't show messages as internal errors.

- client: make the order of the result vectorconsistent with the order used to select coproc jobs

David 3 October 2009
- client: improve coproc_debug messages

- client: if a task is running, uses a GPU, and the system has >1 GPU, append text to its resource string saying which GPU it's using

- manager: tweak Task properties text
ID: 27750 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 27868 - Posted: 10 Oct 2009, 21:37:21 UTC

Rom 5 October 2009
- DIAG: Suspend threads right before extracting their context and then resume them afterwards. Otherwise we could end up in a deadlock state where both the main thread and a support thread are attempting to use the same system resource. In the last situation it was way down in Winsock.

- DIAG: Don't resume after the thread has been suspended, otherwise the thread stack may be trashed after extracting the context. This should still be okay though as by the time the diagnostics framework has gotten here it has already downloaded all the symbols it'll need.


David 6 October 2009
- client: remove redundant 0s in job log

David 7 October 2009
- client: add --unsigned_apps_ok cmdline option and <unsigned_apps_ok> config option. This tells the client to allow unsigned apps. For testing. No file xfers or other network traffic will be allowed if set.

- client: add <exit_after_finish> option (same as cmdline flag)

- client: add <skip_cpu_benchmarks> option (same as cmdline flag)

- client: print message if abort past-deadline unstarted job

- client: improve message when have NVIDIA drivers but no GPU

- client: if anonymous platform description (app_info.xml) doesn't specify FLOPS for a GPU app, assume that it runs at CPU peak speed rather than GPU peak speed. Better to be conservative, otherwise job might be aborted due to time limit exceeded.

Rom 7 October 2009
- MGR: Fix the Statistics page Save/Restore project display feature.

- MGR: Clean up warnings.

- MGR: Some house keeping.

- fix formatting for text report

bema 7 October 2009
- lib: some changes to help building the WIN32 library with MinGW/gcc enable by defining MINGW_WIN32 macro, nothing should change if this is not set.

Charlie 8 October 2009
- MGR: If aborting multiple tasks, ask "Are you sure?" only once.
ID: 27868 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 28049 - Posted: 16 Oct 2009, 20:34:04 UTC

David 12 October 2009
- client: on startup, if a coproc needed by a job is missing, set a "coproc_missing" flag rather than aborting the job. If user removes a GPU board while there's a large queue of GPU jobs, they'll stay queued (until their deadline passes).

Note: this doesn't fix the situation where user connects via Remote Desktop while GPU jobs are running or queued. We should check for Remote Desktop every minute or so, and stop GPU jobs.

- client: the get_all_projects_list() RPC doesn't require auth

- added code for Linux mouse check

- client: don't multiply checkpoint interval (i.e., "disk interval" pref) by # processors.

- web: change description of pref to "Applications checkpoint to disk at most every ..."

- actually, make it "Tasks checkpoint to disk at most every ..." and change it in the advanced prefs dialog too.


Rom 13 October 2009
- LIB: Make the is_remote_desktop compilable for all VS versions and SKUs.

- DOC: Update manager_links.php so that it'll compare by numerical values instead of using string based comparison.

David 13 October 2009
- Add manager help redirector.

Rom 14 October 2009
- MGR: Fix initial first connection problem on startup. I'm not sure why it was only happening at startup, there might have been a few crashes because of this issue as well. The basic problem is that wxWidgets had an exception handler around the initial frame creation and when the first GUI RPC was issued to detect whether or not we were atached to an account manager during menu creation the GUI thread would go about doing idle processing while waiting for the GUI RPC thread to initialize. During this time the frame pointer is NULL and was getting dereferenced which would halt window construction and stay there until some other event was fired.

- MGR: Initial dose of code cleanup and shuffling. Order the menu functions in the order in which they are displayed in the menu.

David 14 October 2009
- client: address the situation where GPUs become unusable for certain periods (e.g. when Remote Desktop is used on Win).

* add is_usable() member function to COPROC.

Currently this just calls the respective (CUDA or CAL) initialization function. We need to check whether this works and/or causes problems.

* in enforce_schedule(), check whether usability has changed for each GPU type.

If we've gone from usable to unusable, flag all jobs for that GPU as coproc_missing (so they won't get run, and will quit if they're running). If we've gone from unusable to usable, clear the flag.

This should deal with all cases except where the client is started up with GPUs unusable.

- client: bug fixes to the above. Don't fetch work for an unable resource.

David 15 October 2009
- client/scheduler: standardize the FLOPS estimate between NVIDIA and ATI. Make them both peak FLOPS, according to the formula supplied by the manufacturer.

The impact on the client is minor:

* the startup message describing the GPU
* the weight of the resource type in computing long-term debt

On the server, I changed the example app_plan() function to assume that app FLOPS is 20% of peak FLOPS (that's about what it is for SETI@home).

- client: the weight of GPU debt in computing total debt should be (estimated throughput of all GPUs)/(estimated throughput of all CPUs) rather than the ratio of 1 GPU to 1 CPU. This change will hopefully cause ratios of granted credit to more closely match resource shares.

David 16 October 2009
- client: multi-thread jobs were being given too high priority; in particular, they were preempting jobs in the middle of time slice.

Solution:
1) don't use MT in the sort order defined by more_important().
2) add a 2nd reordering in which MT jobs are moved ahead of non-MT jobs, but only if #CPUs used is < #CPUs (see promote_multi_thread_jobs())
ID: 28049 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 28429 - Posted: 31 Oct 2009, 23:03:58 UTC

Charlie 16 October 2009
- MGR: Fix build break on Mac

Rom 19 October 2009
- client: Use is_remote_desktop() instead of the various GPU functions to determine when the client software has been switched into Remote Desktop mode and shuts down GPU apps. This will prevent App crashes.

Rom 21 October 2009
- WINSETUP: Remove the 'SeDebugPrivilege' prev from the list of privs the installer sets for BOINC.

Rom 23 October 2009
- MGR: Change the shortcut key for switching to the simple view.

- client: If an administrator has deployed proxy settings at runtime or during a VPN connection allow the client to read the new proxy configuration from the registry.

David 23 October 2009
- client: no network activity if running CPU benchmarks.

Charlie 26 October 2009
- MGR: Add View menu with Cmd+Shift+A to Mac Simple GUI for disabled users.

Rom 26 October 2009
- client: cleanup formatting of linux platform detection code.

Charlie 29 October 2009
- Mac MGR: Add accessibility support for disabled users to BOINCListCtrl

David 29 October 2009
- manager: fix typo

Charlie 30 October 2009
- Fix typo (remove extraneous "extern" statement)

Charlie 31 October 2009
- Mac MGR: allow localization of permissions error alerts

- Update sandbox documentation
ID: 28429 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 28537 - Posted: 6 Nov 2009, 23:04:31 UTC

David 31 October 2009
- MGR: fixed some strings, removed trailing \n's

Rom 3 November 2009
- Update translation template for the manager

Charlie 4 November 2009
- Mac Installer: set most files in BOINC Data directory world-readable

David 5 Novembr 2009
- Move URL-related code to a new file

- Remove stuff related to SOCKS version, since we only support 5

- Win compile fixes

Rom 5 November 2009
- MGR: Use mixed case keyboard accelerators instead of all caps, the wxGetTranslation function is case sensitive even though the rest of the menu code does not care about case.

Charlie 5 November 2009
- Update Mac documentation

- Mac: update XCode project for new files url.ccp,.h

Rom 6 November 2009
- Update to OpenSSL 0.9.8l
ID: 28537 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 28838 - Posted: 18 Nov 2009, 22:06:11 UTC
Last modified: 19 Nov 2009, 1:01:19 UTC

6 November 2009
David
- client: parse HTTP_PROXY strings of the form http://username:passwd@host.dom.dom:port/file (we weren't parsing the username and password before).

- client: fix the feature that lets you exclude a list of hosts from going through the proxy.

9 November 2009
David
- client: the checkin of 15 Oct related to multi-thread apps didn't work due to a typo.

- client: if <ncpus> is present in cc_config.xml, we're supposed to act as if there were that many physical CPUs. In particular, we need to set host_info.p_ncpus to that value, since that's what is reported in scheduler requests.

- client: add --no_gpus cmdline option

- client: avoid spurious error message when parsing <proxy_info> from cc_config.xml

- client: fix bug that crashed client if client_state.xml had garbage within <file_info>

10 November 2009
Charlie
- Mac installer: fix crash bug in AddRemoveUser utility

David
- client (Mac/Linux): if the NVIDIA or ATI detection functions cause a SIGSEGV, recover from it.

- client: the handling of GUI RPCs was inconsistent; some expected <request>, some expected <request/>, and some would accept either.
Changed them all to accept either.

- client (Unix): use waitpid(-1, ...) instead of waitpid(0, ...).
This reaps child processes even if they've changed their process group. (from Michael Melanson)

- client: handle no_cpu, no_cuda, no_ati prefs correctly when they're in venue-specific prefs.

11 November 2009
David
- unix build: fix "out of tree" build (what's that?). from Oliver Bock

- client: fix yesterday's checkin to remove restrictions on GUI RPC request elements. You can now use either <foo></foo> or <foo/> for empty request messages.

- GUI RPC client library: fix double-free bug. it's not clear how this ever worked.

Rom
- On Windows treat all SEH exceptions as C++ style exceptions.
NOTE: I'll need to do a little more research and adjust the diagnostics stuff later. I believe that the diagnostics framework will now always report an unhandled C++ exception for things like an Access Violation.

- client: On Windows, recover from an Access Violation if/when the GPU functions access violate.

- Backout previous change. The problem doesn't yet manifest itself on Windows and the change has too many implications.

Charlie
- Mac: Fix build breaks

12 November 2009
David
- client: if a project has a no_{cpu,cuda,ati} pref set, don't accumulate debt for that resource. Otherwise we'll accumulate debt forever, pushing other projects into overworked state.

- Mac compile fix

- client: add new config options:
<ignore_cuda_dev>n</ignore_cuda_dev>
<ignore_ati_dev>n</ignore_ati_dev>

To ignore (not use) specific NVIDIA or ATI GPUs. You can ignore more than one.

Rom
- WINSETUP: Add the PROJINIT_URL and PROJINIT_AUTH properties to the installer custom action code, a project_init.xml file will be created in the data directory.

13 November 2009
David
- client: add <exclusive_gpu_app> option: suspend GPU usage when particular apps are running

- First part in removing boinc.dll from the BOINC client on Windows

- Second part in removing boinc.dll from the BOINC client on Windows

- client: fix exclusive_gpu_app feature so that it responds within 10 sec instead of 60 sec.

Rom
- Enforce UTF-8 encoding

17 November 2009
Rom
- MGR: Remove bitmap that is part of the Wizard.

- MGR: Add basic support for displaying the Nvidia and ATI logos for projects which support Nvidia and ATI GPUs. Todo: add descriptions and project images when selected.

David
- change project_list.php so that it shows platform[plan_class].
That way the client can know which projects have GPU and multithread apps.

- client: message tweak

18 November 2009
Charlie
- Mac installer: fix 2 installer bugs

Rom
- MGR: Add descriptions for each project as a tooltip and add an icon for multicore capable projects.

- MGR: Fix the minimum wizard size problem introduced by removing the wizard graphic.

- Move URL-related code to a new file

- Remove stuff related to SOCKS version, since we only support 5

- MGR: Better formatting and layout of the project descriptions within the list box instead of relying on the tooltips.
ID: 28838 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 29089 - Posted: 30 Nov 2009, 23:53:37 UTC

20 November 2009
Rom
- Fix DLLs with missing file version resources

23 November 2009
Rom
- WINBUILD: Introduce the beginning of an automated build system for Windows. The goal is to completely automate the build process by creating a self contained environment for the scripts to execute under. When completed it'll be able to do the following:

* Increment version information
* Build client software using installed version of Visual Studio (VS).
* Validate symbol files for specific components.
* Add source file information to symbol files. (This will allow VS to automatically download the source file from SVN while single-stepping through the code on a clean machine)
* Code sign executables
* Build installer
* Code sign installer
* Upload updated symbol files and and setup packages When building interactively:
* Automatically update the DLLs BOINC and BOINCMgr depend on when they have been updated in the source tree.
* Fix-up BOINC project files when new branches are created
* Fix-up project files for components BOINC depends on when new versions are released.

- Introduction of automated Windows build environment

- Introduce boinclog, it basically creates a tab delimited file using the message log cache of the client. Useful for debugging debt related issues using Excel or various databases.

David
- client: show more general prefs on startup

- manager: show status for jobs aborted because not started by deadline

Charlie
- MGR: In Simple View, Mac screen reader tells user to switch to Advanced View

24 November 2009
Rom
- log: Use the standard BOINC time logging rountine for reporting date and time information instead of RFCXXXX.

- log: Remove the ending newline character from the messages before looking for any newline characters which would appear in multi-line messages like those from http_debug.

- log: Introduce the ability to specify where the data directory is in case we are attempting to talk to a 5.10 client.

- log: Fix a parameter parsing bug, hazards of copy/paste/fix-up I suppose. Increment the index before use instead of just adding 1. Next iteration through the main loop will then pick-up new parameter instead of the value for the previously processed command. Parameter parsing 101.

25 November 2009
Charlie
- MGR: Implement Mac accessibility for Statistics and Disk tabs

- Mac Sandbox: attempt to fix bug where Manager reports that admin user is not authorized to run BOINC

Rom
- client: Treat each HTTP header sent to the server as a new log message.
Some tools get confused when more than one delimeter is used in common file types.

26 Bovember 2009
Charlie
- MGR: Don't localize keyboard shortcut for Close Window

- MGR: Tweaks to Mac accessibility

- Mac Installer: Check for our users and groups having IDs which conflict with other users and groups on the system

27 November 2009
David
- client: use [wfd] consistently

- client: add <cpu_sched_status> log flag. This tells you what's running, not why.

- client: add <std_debug> log flag; changes in STD.

The above are to let you log just stuff relevant to debt. Right now I'm not sure why we need STD at all.

30 November 2009
Rom
- MGR: Fix-up tools tips for various elements in the project list control.

- LOG: Change the secondary delimeter to '' for messages that contain newline characters.

- MGR: Hitting the back button on the ProjectInfo? page in the wizard when you have highlighted a project you are already attached too, should not cause the 'you are already attached to project' dialog to be displayed. This also appears to have fixed the random page being displayed when the dialog has been dismissed.

- small bug fix
ID: 29089 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 29429 - Posted: 13 Dec 2009, 22:29:56 UTC

Loads of changes again in the past two weeks. Better to off load them to this thread. :-)

1 December 2009
David
- unix: build fixes

- client: apply the LTD normalizing offset to all projects, even non-debt-eligible ones.

- client: message tweak on <std_debug> use.

- client: change how short term debt is updated.

Old: it's based entirely on CPU time.

So a GPU project, whose app uses only a fraction of a CPU, accrues positive debt. This is OK if the project has only GPU apps, since STD is not (currently) used for GPU scheduling. But some projects have both CPU and GPU apps.

New: STD is based on total processing.

It has terms for each resource type. The notion of "runnable resource share" is specific to a type.

Note: the notion of "resource share fraction" appears in a couple of other places:

* it's passed to apps in app_init_data.xml
* it's passed in scheduler requests. It should be broken down by resource type in these cases too. Note to self: do this later.

- Tweaking messages.

Rom
- MGR: Filter project list icons so that the icon will only be displayed if the volunteer has the hardware to go with it.

2 December 2009
Rom
- Update to libcurl 7.19.7 (DNS Cache and Sync DNS patches applied)

Charlie
- Promote Mac 6.10.21 to Recommended

- Mac Installer: Rearrange License Agreement so Restrictions section is visible without scrolling and is in bold text

3 December 2009
David
- client: fix divide-by-zero bug in STD code

- fix compile warnings

- client: Add offset to LTD of non-eligible projects only if the offset is positive.

- client: some cmdline args set members of config.
However, config was being cleared after cmdline args were parsed, so these args had no effect. Instead, clear config before parsing cmdline

- client: my STD-related checkin of Dec 1 was bad.
It computed an "overall STD" as the sum of CPU and coprocs, weighted by the coproc's speed, as we do for LTD. This was the wrong idea; in the presence of GPUs, STDs quickly get pushed to +- 1 day and are truncated there.

New scheme: STD is maintained per (resource type, project). This fixes the above problem, and it opens to door to round-robin scheduling of GPUs.

- client: the calculation of "anticipated debt" was scaling by relative resource share. This wasn't correct, seems to me.

- client: rename "debt" to "long_term_debt" in a few places (but not in the client state file, for compatibility)

- compile fixes, message tweaks

Charlie
- Mac client: update build scripts, XCode project for curl-7.19.7 and c-ares 1.7.0

4 December 2009
Charlie
- Mac: Update XCode project and build scripts to build under XCode 3.2.1 and OS 10.6 Snow Leopard

David
- client: fix bug in debt calculation

- client: <zero_debts> zeroes STD too

- client: scale STD limit by # instances

- client: sort out proxy_info mess. Source of proxy info (descending priority)

* GUI RPC (Manager or boinccmd)
This and only this is saved in state file. If neither HTTP nor SOCKS server name present, this is viewed as not present

* environment vars
* cc_config.xml

Show sources of proxy info in message log. If one is present but overridden, show a message to that effect.

This fixes a bug where someone had a proxy info env var and forgot about it. They got an erroneous message saying no proxy was being used.

- win compile fixes

5 December 2009
Charlie
- Mac: Update XCode project; fix installer not starting Manager on OS 10.6

David
- client: bug fixes to recent proxy info checkin

6 December 2009
David
- code shuffle: move client-specific GPU code to a separate file

- more code shuffle: add COPROCS to HOST_INFO

- result of code shuffle: the HOST_INFO structure returned by the get_host_info() GUI RPC now contains GPU info

7 december 2009
Charlie
- Mac: Update XCode project for new file coproc_detect.cpp

- Indicate which clients work on which Mac OS versions

David
- client: don't set STDs for non-runnable projects to zero.
Let them float around with other projects. Fixes problem where, when a project finishes its last job and has a negative STD, it gets an unfair increment by being set to zero.

December 8 2009
David
- client: scheduling tweak.

Old: if a project has RR sim deadline misses, select jobs to run high-priority on the basis of:
1) deadline (earliest first)
2) estimated time to completion (least first)

This ignores whether jobs missed their deadline in RR sim, so it may choose to run a job that's actually in no danger of missing its deadline over one that is.

New: choose only jobs that miss their deadline in RR sim

- fix initialization bug that made GPUs invisible

- fix GPU bug (again)

10 December 2009
David
- client: STD for a device with N instances can increase or decrease at N times real time. My checkin of 7 Dec reflects this by changing the STD limits to +- N*MAX_STD. This looks like a bug to users. Instead, scale that rate of STD change by 1/N, and keep the old limits of +- MAX_STD

- client/manager: first whack at a "snooze GPU" button

- client/manager: finish "snooze GPU" button

- manager: fix bug in the "Snooze GPU" option

11 December 2009
David
- client/scheduler: deal with situation where GPU has enough RAM to run job, but when we actually run the job not enough GPU RAM is free, so the application fails. This can cause a large number of jobs to fail.
Solution:

* app_plan() can specify the GPU RAM requirements of an app version.
This is passed to the client in a new field <gpu_ram> of the <app_version> element.

* prior to starting or restarting a GPU app, the client checks the amount of free RAM on the particular GPU.
If it's not enough for the app version, the client doesn't start it, and arranges for the scheduler to ignore it for 5 minutes (by which point there might be more free GPU RAM)

Notes:
1) this change will have effect only when both client and scheduler are updated.

2) the check is done in enforce_schedule(), rather than schedule_cpus(), because only at that point have we assigned a specific GPU to the job.

3) there's another case to deal with: a GPU app's malloc of GPU RAM fails in the middle of the job. Currently the job fails.
I plan to add an API call boinc_temporary_exit(x) so that the job can exit and potentially restart in x seconds. (In principle this mechanism is sufficient for all cases, but it could lead to a lot of starting/exiting, so the current change is worthwhile).

- manager: add GPU always/auto/never menu items

- client: a couple of switch statements were missing breaks. This would have caused work-fetch errors if using the no_cuda, no_cpu etc. prefs

- boinccmd: fix output of --get_disk_usage

12 December 2009
David
- client: maintain mean STD at zero over all projects, not just runnable ones

- API and client: add an API function boinc_temporary_exit(dt).
This exits the app with status zero and no finish file, so the client will restart it. It creates a file "temporary_exit" containing dt. The (new) client reads this file and will postpone scheduling the job again for dt seconds. Old clients will treat it as a premature exit, and potentially try to reschedule the job immediately.

This function is intended for GPU applications that fail to allocate GPU RAM, presumably because a non-GPU application has it allocated. We don't want the job to fail, and we want to wait for a while before trying the allocation again.

13 December 2009
David
- wrapper: fix fraction-done bug
ID: 29429 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 30264 - Posted: 19 Dec 2009, 14:30:11 UTC

13 Decembr 2009
Charlie
- API and client: Fix bugs in recent chack-ins. (Chack-ins? lol)

- Mac command-line install: add .txt extension to copyright files

14 December 2009
Charlie
- SS: Allow users to set screensaver durations from ss control panel

David
- client: ATI: call calShutdown() when done. Otherwise Lenovo can't switch to low-power GPU.

- client/manager: show coprocessor short-term debts

- client: fix bug in insufficient video RAM feature

- client: improve CPU sched debug msgs

- client: fix "temporary exit" feature

- client: typo fix

15 December 2009
Charlie
- Mac SS: In Mac screensaver control panel say "overview screensaver" not "BOINC screensaver"

David
- boinccmd: compile fix

16 December 2009
Charlie
- Mac Uninstaller: Properly change screensaver settings under OS 10.6

Rom
- Cleanup various warnings

- WINSCR: Implement new configuration dialog with new parameters

- WINSCR: Remove crufty code

- WINSCR: Update copyrights in resource files

- Update copyright information

17 December 2009
Charlie
- client: add missing dlsym of cuMemGetInfo() on non_Windows platforms

Rom
- bug fix in screen saver code.

- MGR: Make the minimum version of wxWidgets we support 2.8.0 or better

- MGR: Start cleaning up warning related to 2.6 backwards compatibility

- MGR: More cleanup work

- MGR: Deconflict menu item IDs.

- MGR: Update the base taskbar code to include some things from Windows Vista and Windows 7.

- MGR: Update the base taskbar code for thread safety.

- MGR: Treat network status messages as NIF_REALTIME, if the screensaver or the logon screen appears, the messages are discarded.

- MGR: Create a new class of balloon messages which can be queued for notifications.

- MGR: bug fix

David
- client: show <cpu_sched> message when suspend/resume GPU activity

- client: there are oddball cases where the client has an app for which avg_ncpus > ncpus. Allow such jobs to run; otherwise nothing runs.

- client: in computing "anticipated" STD, scale by ninstances (from John McLeod)

18 December 2009
Charlie
- MGR: fix another bug due to changes for Snow Leopard compatibility

- client: fix bug; Mac: Add new files to XCode project

Rom
- MGR: Cleanup wxFlatNotebook warnings.

- MGR: Add a test notification menu item to the taskbar

- MGR: When a notification is clicked open up the GUI and switch to the notification tab in the advanced view.

- MGR: Reorder tabs

- MGR: Review messages tab

- MGR: cleanup code in various places

- MGR: content that was formally in the messages tab can now be found in the Event Log, check the advanced menu.

- Quick Updates

- MGR: Remove some old wxWidgets 2.4 cruft for dealing with Hyperlinks. wxWidgets now natively supports them.

David
- client (Mac): it's DYLD_LIBRARY_PATH, not DYLIB_LIBRARY_PATH

- client and GUI RPC: add some plumbing for notices

- win compile fixes

- scheduler: use a more accurate way of estimating total FLOPS and avg_ncpus for GPU apps. App versions are now characterized by two parameters (we assume that the app uses either the CPU or the GPU at a given time, but not both):

* the fraction of FLOPs performed on the CPU
* when the app is using the GPU, the fraction of peak FLOPS that it gets.

We then run the numbers to get the total FLOPS and avg_ncpus.
ID: 30264 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15483
Netherlands
Message 30338 - Posted: 25 Dec 2009, 16:32:42 UTC

19 December 2009
Charlie
- MGR: Fix Mac compile errors caused by adding Windows-only code to cross-platform source files, fix compile warnings, remove deleted files from XCode project

- Fix XCode project for new source files

- MGR: Begin fixing new Event Log to integrate properly with async RPC logic

- MGR: Bug fixes to new Event Log

Rom
- MGR: Convert the event log to a modeless dialog.

- WINSCR: Remove some more crufty code from the screensaver.

David
- win compile fixes

21 December 2009
Rom
- bug fix

- MGR: wxHyperlinkCtrl doesn't accept an empty url and title at the same time when building a debug build.

David
- manager/client: show PID in task properties; add PID to RESULT structure in GUI RPC

- client: a big glob of new code related to notices. Not functional yet.

- Win compile fixes. Also, needed to provide a replacement for strptime() on Win. WTF?

- client: intermediate checkin for RSS/notice stuff. It's coming along.

Charlie
- MGR: Make GetCurrentViewPage?() indepenedent of tab positons; Always set Periodic RPC timer to 1 second if showing event log; Minor code cleanup from Rom

22 December 2009
Charlie
- MGR: change ID_DLGEVENTLOG to unique value 30000; add minimize and maximize boxes to Event Log window; Mac: Close Window menu item close Event Log window if it is front window

- Fix typo

- MGR: Fix bugs in my Close Window logic, rename CloseEventLog() to OnEventLogClose()

- MGR: Restore my previous fixes to Event Log for the new orphan dialog implementation to integrate properly with async RPC logic; if Event Log is open, close it in CBOINCBaseFrame::OnExit() so Manager can shut down properly

Rom
- MGR: Treat the Event Log dialog as an orphan dialog. This allows the main manager window to move to the top of the z-order even while the dialog is up.

- MGR: Use Destroy() instead of deleting this pointer to cleanup the dialog.

- MGR: Move the event log initialization and clean-up to the application class, it is not owned by any frame, it is modeless.

NOTE: Need to consult with Charlie about how best to register modeless dialogs for RPC updates. They are not owned by a frame and should be capable of being displayed or view from any frame. i.e. SwitchActiveGUI() should not have any effect on them.

- MGR: Display a window title with the async waiting dialog.

- bug fix

- MGR: Make sure the correct constructor is called, otherwise nothing happens.

- MGR: Reenable the refresh timer local to CDlgEventLog, but do not issue an RPC, determine the size by asking the vector.

David
- more notice stuff

- client: more notice stuff. Add <notice_debug> log flag

- client: when parsing cc_config.xml, clear vectors so we don't end up with duplicates

- client: more notice stuff. Substantial progress! We're now saving feed lists, and fetching items from feeds.

23 December 2009
Charlie
- MGR: Fix save and restore of Event Log column widths

- Mac MGR: Call Mac accessibility announces localized tab names

David
- client: further work on notices. The RSS feed part of it is mostly working.

- client: fix bug in XML_PARSER (tags with attributes weren't parsed correctly if no attribute buffer supplied)

- internal change: rename MSG_USER_ERROR to MSG_USER_ALERT

- remove old file

- client: code cleanup: most message code into a class

- client: more work on notices. Create notices for client and scheduler user alerts

- make startup msgs normal priority; fix crash

- client: divide LTD deltas by ninstances, same as for STD. This is cosmetic - it won't affect work fetch, but it will prevent LTD from changing faster than real time

- client: add logic to work fetch so that each project will have enough jobs to use its share of resource instances. This avoids situations where e.g. on a 2-CPU system a project has 75% resource share and 1 CPU job, and its STD increases without bound.

Did a general cleanup of the logic for computing work request sizes (seconds and instances).
ID: 30338 · Report as offensive

Message boards : BOINC client : BOINC Trunk Change Log

Copyright © 2024 University of California.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.