Commit Graph

111 Commits

Author SHA1 Message Date
David Anderson dd41c91c32 client: message tweaks 2013-09-17 13:05:06 -07:00
David Anderson f654cf947e client: parse <client_new_version_text> in cc_config.xml 2013-07-13 16:45:15 -07:00
David Anderson a8485f3d3f Various: Fix some compile warnings; from Gianfranco 2013-07-09 10:34:32 -07:00
David Anderson 57a6d3d17a client (Android): make max battery temperature a preference
Note: internal change only; there's no GUI for this yet
2013-06-20 21:47:34 -07:00
Charlie Fenton 19c53f388f client: if event log line limit is set to 0 (unlimited) in cc_config.xml, display "Config: event log limit disabled" in event log at startup 2013-06-13 01:53:25 -07:00
David Anderson 276f8130a6 client: show event log line limit in event log at startup 2013-06-07 15:20:14 -07:00
David Anderson 78f7610f6e remove dependency of boinc_api.h on str_replace.h (and hence config.h)
Any files that use strlcpy() or strlcat() must directly include str_replace.h
2013-06-06 17:31:46 -07:00
David Anderson 846b8c7757 all components: change strcpy() to strlcpy() when possible.
This commit should cover the client and manager code.
2013-06-03 20:24:48 -07:00
Charlie Fenton 3eb430eaec client & MGR: when writing cc_config.xml, put <max_event_log_lines> in correct alphabetical order 2013-05-28 21:19:28 -07:00
Charlie Fenton 93aad6826c client & MGR: add support for <max_event_log_lines>N</max_event_log_lines> in cc_config.xml
Default is 2000
0 means unlimited
2013-05-18 03:25:44 -07:00
David Anderson 6c2631ec6f client: make "missing app" messages more consisten 2013-05-16 12:40:43 -07:00
David Anderson 6b6c2ac519 - client: fix bug that could cause idle GPUs when exclusions are present.
The basic problem: the way we assign GPU instances when creating
        the "run list" is slightly different from the way we assign them
        when we actually run the jobs;
        the latter assigns a running job to the instance it's using,
        but the former doesn't.
    Solution (kludge): when building the run list,
        don't reserve instances for currently running jobs.
        This will result in more jobs in the run list, and avoid starvation.
        For efficiency, do this only if there are exclusions for this type.
    Comment: this is yet another complexity that would be eliminated
        if GPU instances were modeled separately.
        I wish I had time to do that.
- client emulator: change default latency bound from 1 day to 10 days
2013-04-07 13:00:15 -07:00
David Anderson 24e8133e4b - tabs -> spaces 2013-04-02 17:23:37 -07:00
David Anderson 4fbac17647 - client: alphabetize log flags 2013-03-22 10:25:39 +01:00
David Anderson 033a47691b - client: write log flags in alpha order 2013-03-15 13:38:44 +01:00
David Anderson e41f7dfee5 - client: parse <fetch_on_update> config flag, and show it on startup 2013-03-07 11:30:08 +01:00
David Anderson 77ee073f58 - client: show error notice if a GPU exclusion (in cc_config.xml)
has an invalid URL, type, or app
- server, create_work() function: if a <file_info> in input template
    lists URLs, they're directories; append filename to each one
2013-03-05 16:57:51 +01:00
David Anderson 3c73f40809 - client: the logic for work fetch in the presence of GPU exclusions
(especially per-app exclusions) was incomplete and buggy.
    Changes:
    - make bitmaps of included instances per (app, resource type)
    - in round-robin simulation, we keep track of used instances
        (so that we know if there are instances that are idle
        because of exclusions).
        Do this based on app-level exclusions
        (previously it was done based on project-wide exclusions,
        which didn't include app-level exclusions).
    - compute RSC_PROJECT_WORK_FETCH::non_excluded_instances
        as the logical OR of the per-app masks.
        I.e. if you exclude an instance for all apps separately,
        it's the same as excluding it for the project as a whole.
        (Note: this bitmap is used for only 1 purpose:
        if we have idle instances, don't request work from a project
        for which those instances are excluded.)
    - define RSC_PROJECT_WORK_FETCH::ncoprocs_excluded as the # of
        instances excluded for *any* app, not the # excluded for all apps.
        This quantity is used in work fetch to make sure we don't
        unboundedly fetch jobs that turn out not to have a GPU to run on
        due to exclusions.
2013-03-05 13:42:00 +01:00
Charlie Fenton 462be89f01 Restore changes lost due to GIT confusion 2013-03-04 17:01:36 +01:00
Rom Walton 516eff60b0 - client: Hook up the XML portion of the Intel GPU detection code so
the server scheduler knows about it.
    - client: Print out the peak flops for the Intel GPU, the regular
        OpenCL descriptions do not show peak flops.
2013-03-04 15:30:03 +01:00
Charlie Fenton ce87ec9848 OpenCL: First pass at adding support for Intel Ivy Bridge GPUs 2013-03-04 15:23:39 +01:00
David Anderson 56868ced49 - client: fix bug in handling proxy info in cc_config.file 2013-03-01 16:08:52 +01:00
David Anderson 777f1f11e8 - client: change work fetch policy to avoid starving GPUs in situations where GPU exclusions are used. - client: fix bug in round-robin simulation when GPU exclusions are used.
Note: this fixes a major problem (starvation)
    with project-level GPU exclusion.
    However, project-level GPU exclusion interferes with most of
    the client's scheduling policies.
    E.g., round-robin simulation doesn't take GPU exclusion into account,
    and the resulting completion estimates and device shortfalls
    can be wrong by an order of magnitude.

    The only way I can see to fix this would be to model each
    GPU instance as a separate resource,
    and to associate each job with a particular GPU instance.
    This would be a sweeping change in both client and server.
2013-03-01 15:31:41 +01:00
David Anderson b2f9e30570 - scheduler: fix bug that cause NCI to be sent even when
client is not requesting work
- client: parse the <vbox_window> option in cc_config.xml


svn path=/trunk/boinc/; revision=26127
2012-09-19 23:21:04 +00:00
David Anderson 1aea1fb0f3 - client: show <vbox_window> option in log,
and give warning if include this while in sandbox mode
- web: update URLs for BOINCstats

svn path=/trunk/boinc/; revision=25697
2012-05-18 22:13:36 +00:00
David Anderson 32a08d27d9 - C++ code: use MAXPATHLEN for char arrays that hold paths
svn path=/trunk/boinc/; revision=25659
2012-05-09 16:11:50 +00:00
David Anderson bbfbef0fe8 - client: code cleanup. Move RESULT and PROJECT to separate files
svn path=/trunk/boinc/; revision=25621
2012-04-30 21:00:28 +00:00
David Anderson db44fa1371 - client: enforce <no_gpus> in config file not just at startup,
but also when config file is re-read.


svn path=/trunk/boinc/; revision=25600
2012-04-25 18:14:28 +00:00
David Anderson c34093e374 - web: don't show account keys on account page;
rewrite the page explaining and showing account keys.
- client: remove <std_debug> log flag
- client: remove <zero_debts> config option


svn path=/trunk/boinc/; revision=25581
2012-04-19 07:36:47 +00:00
David Anderson 21d4a3d9c2 - client: zero PROJECT::last_upload_start on reset,
so that we can fetch work immediately
	- client: in PERS_FILE_XFER::create_xfer(),
		check for already-existing file before seeing we're allowed to start a new xfer
	- client: in PERS_FILE_XFER::create_xfer(),
		if an async verify is in progress, mark PERS_FILE_XFER as done.

svn path=/trunk/boinc/; revision=25243
2012-02-13 05:02:51 +00:00
David Anderson ae7681c026 - client: add some missing items to CONFIG::parse_options_client().
svn path=/trunk/boinc/; revision=24598
2011-11-15 07:50:02 +00:00
David Anderson 9cf4fc76d0 - client: improve messages for the above
svn path=/trunk/boinc/; revision=24594
2011-11-14 23:45:08 +00:00
David Anderson a7e7da6bff - client: show error messages (as notices) when get an error
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
2011-11-14 23:31:12 +00:00
David Anderson a4f09b9c1b - intermediate checkin so that I can edit on Unix
svn path=/trunk/boinc/; revision=24592
2011-11-14 23:05:42 +00:00
David Anderson 15b5e6e6a7 - client: show GPU exclusions at startup
(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
2011-11-03 22:27:20 +00:00
David Anderson b95ac02c5b - client: change the way project priorities are computed,
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
2011-10-19 06:37:03 +00:00
David Anderson 5c0d5d371e - client: compute project scheduling priority more efficiently
- 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
2011-10-03 06:18:58 +00:00
David Anderson 090050c0ca - client: fix bug that could cause GPU idleness
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
2011-10-03 03:29:58 +00:00
David Anderson b7f1aa0226 - client: fix a bug reported by Jacob Klein,
where work fetch didn't work right in the presence of
    multiple GPUs and <exclude_gpu> config options.
    For example: suppose:
        - you have 2 GPUs and 2 projects
        - Project A is excluded from GPU 1
        - you have lots of jobs for project A
    Then the client won't try to fetch jobs from project B.

    The problem had 2 parts:
    a) round-robin simulation wasn't taking GPU exclusions into account.
        In the above example, it would think that both GPUs had jobs.
        I fixed this by computing the # of GPUs from each project
        is excluded, and using this in the RR simulation.
    b) Once this was done, I needed to make the client
        request GPU jobs from project B rather than project A.
        I did this with following policy:
        If a project has excluded GPUs of a given type,
        and has a runnable job of that type,
        don't ask it for more work of that type.

    Notes:
    - the policy in b) is crude, and it means that work-buffer
        preferences are ignored in some cases.
    - neither a) nor b) takes into account app-level exclusions.

    I could fix both of these with a lot of work,
    but I'd rather move to a model in which dissimilar GPUs
    are modeled as different resources,
    which would remove the need for the <exclude_gpu> mechanism
    in the first place.

- web: remove extraneous ) at end of button tooltips


svn path=/trunk/boinc/; revision=24312
2011-10-01 16:23:28 +00:00
David Anderson 9667ff52a8 - client simulator: fixes
- client: message tweaks


svn path=/trunk/boinc/; revision=24297
2011-09-26 23:34:40 +00:00
David Anderson 760c16eb03 - scheduler: in work_needed(), ignore requests for resource
types for which we have no app versions
- client: if too many <coproc> elements in cc_config.xml,
    detect it and inform user


svn path=/trunk/boinc/; revision=24144
2011-09-08 18:55:55 +00:00
Charlie Fenton 97f5146f2a define GPU_TYPE_NVIDIA, GPU_TYPE_ATI, use everywhere instead of literal strings "NVIDIA" and "ATI" to ensure uniformity
svn path=/trunk/boinc/; revision=24090
2011-08-31 11:08:13 +00:00
David Anderson c5c5975b44 - Improve interface of XML_PARSER.
Add parsed_tag and is_tag to the class,
    so that parsing functions don't need to declare them
    and pass them around.
- Complete the task of using XML_PARSER as the argument
    to all parsing functions.
    (Internally, many of these functions still use the old XML parser;
    that's the next step.)


svn path=/trunk/boinc/; revision=23978
2011-08-10 17:11:08 +00:00
David Anderson 609d5665cc - client: pass XML_PARSER& rather than MIOFILE& to parse functions.
Preparatory to using new-style XML parsing everywhere.


svn path=/trunk/boinc/; revision=23975
2011-08-09 21:44:14 +00:00
David Anderson 02f03f0790 - client: replace <ignore_cuda_dev> with <ignore_nvidia_dev>
in cc_config.xml (but keep old one for compat)


svn path=/trunk/boinc/; revision=23775
2011-06-24 03:58:52 +00:00
David Anderson 94e8c48220 - client: change --detach_phase_two (??) to --detach_console
- eliminate compiler warnings (e.g. shadowed vars)
    in various places, mostly in client


svn path=/trunk/boinc/; revision=23710
2011-06-12 20:58:43 +00:00
Charlie Fenton 363b1b9161 MGR: Continue adding Exclusive Apps pane to Computing Prefs dialog; lib: add missing items in CONFIG, PROXY_INFO struct initializers
svn path=/trunk/boinc/; revision=23482
2011-04-29 12:04:07 +00:00
Charlie Fenton 9a4b695299 lib, MGR: Implement get_cc_config, set_cc_config RPCs
svn path=/trunk/boinc/; revision=23470
2011-04-27 11:01:07 +00:00
David Anderson 0ba3cc2d7b - client: shuffle code to move CONFIG and LOG_FLAGS
into lib/cc_config.h,
    in preparation for adding GUI RPCS


svn path=/trunk/boinc/; revision=23432
2011-04-25 03:18:26 +00:00
David Anderson 3b1b7e9204 - client:
- add <heartbeat_debug> log flag
    - show trickle-up and int file upload msgs if <app_msg_receive> set
    - if scheduler RPC reason is trickle-up, say so
- manager:
    - restore "non CPU intensive" to task description
    - project properties: show if RPC in progress or trickle-up pending.
        (show these low-probability things only if present)
- manager: fix Unix build

(from Ian Hay)


svn path=/trunk/boinc/; revision=23365
2011-04-14 01:04:10 +00:00