Commit Graph

81 Commits

Author SHA1 Message Date
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
David Anderson 3b906a191c - client: generalize the GPU framework so that
- new GPU types can be added easily
		- users can specify GPUs in cc_config.xml,
			referred to by app_info.xml,
			and they will be scheduled by BOINC
			and passed --device N options
			Note: the parsing of cc_config.xml is not done yet.
		- RPC protocols (account manager and scheduler)
			can now specify GPU types in separate elements
			rather than embedding them in tag names
			e.g. <no_rsc>NVIDIA</no_rsc> rather than <no_cuda/>
	- client: in account manager replies, parse elements of the form
		<no_rsc>NAME</no_rsc>
		indicating the GPUs of type NAME should not be used.
		This allows account managers to control GPU types
		not hardwired into the client.
		Note: <no_cuda/> and <no_ati/> will continue to be supported.
	- scheduler RPC reply: add
		<no_rsc_apps>NAME</no_rsc_apps>
		(NAME = GPU name)
		to indicate that the project has no jobs for the indicated GPU type.
		<no_cuda_apps> etc. are still supported 
	- client/lib: remove set_debts() GUI RPC
	- client/scheduler RPC
		remove <cuda_backoff> etc. (superceded by no_app)
		Exception: <ip_result> elements in sched request
		still have <ncudas> and <natis>.
		Fix this later.

	Implementation notes:
	- client/lib: change "CUDA" to "NVIDIA" in type/variable names, and in XML
		Continue to recognize "CUDA" for compatibility
	- host_info.coprocs no longer used within the client;
		use a global var (COPROCS coprocs) instead.
		COPROCS now has an array of COPROCs;
		GPUs types are identified by the array index.
		Index zero means CPU.
	- a bunch of other resource-specific structs (like RSC_WORK_FETCH)
		are now stored in arrays, with same indices as COPROCS
		(i.e. index 0 is CPU)
	- COPROCS still has COPROC_NVIDIA and COPROC_ATI structs to hold vendor-specific info
	- APP_VERSION now has a struct GPU_USAGE to describe its GPU usage

svn path=/trunk/boinc/; revision=23253
2011-03-25 03:44:09 +00:00
David Anderson f359a705f9 - client: accept <options/> and <log_flags/> in cc_config.xml
- client: reset log flags (as well as options) when rereading cc_config.xml

svn path=/trunk/boinc/; revision=22944
2011-01-25 19:05:44 +00:00
David Anderson 3a9549979e - client: tweak to ATI CPU recognition
from [P3D] Crashtest

svn path=/trunk/boinc/; revision=22845
2010-12-18 17:09:57 +00:00
David Anderson 3de1406265 - scheduler: in app_plan_sse3(): check for CPU features in
p_model as well as p_features;
    pre-6.x clients report them in p_model.
- client: fix bug where "reread config file" didn't update
    the max log file sizes

svn path=/trunk/boinc/; revision=22838
2010-12-09 23:27:11 +00:00
David Anderson e6431bfbde - client: msg tweak
- client: ignore exclusive apps including "boinc"
- client simulator: fixes

svn path=/trunk/boinc/; revision=22566
2010-10-20 23:45:49 +00:00
David Anderson 33713781d1 - client: distinguish between messages to be displayed as HTML
(e.g. "Download new client here" link) and others
		(e.g. "Bad tag in cc_config.xml: <foo>").
	- code cleanup; move show_message from main.cpp to client_msgs.cpp

svn path=/trunk/boinc/; revision=22548
2010-10-18 20:09:51 +00:00
David Anderson a20e7d5837 - client simulator: updates. Fix web interface.
svn path=/trunk/boinc/; revision=22476
2010-10-07 21:41:31 +00:00
David Anderson d7d2ebef85 - client: add <max_tasks_reported> config item:
limit the # of completed tasks reported per RPC

svn path=/trunk/boinc/; revision=22467
2010-10-07 16:02:44 +00:00
David Anderson be14996a1e - scheduler: deal correctly with jobs that need > 2GB RAM.
Such jobs fail on 32-bit machines, even if they have sufficient RAM,
    because 32-bit OSs don't support address spaces > 2GB.

    In general, we want to support the following scenario:
    - an app has a mixture of small (< 2GB) and big (> 2GB) jobs.
    - there are app versions for both 32b and 64b platforms
    - one of the 32b versions is faster than the 64b version
        (say, it's a 32b GPU app)

    Goals:
    If the client is 32b, send it only small jobs,
        using the fast 32b version if possible
    If the client is 64b and has sufficient RAM,
        send it large jobs using the 64b version;
        send it small jobs using the fast 32b version if possible,
        else the 64b version

    Solution: extend get_app_version() so that it detects big jobs,
        and uses only 64b versions for them.
        Add a "for_64b_jobs" field to BEST_APP_VERSION
        so that we maintain a separate memoized set of
        BEST_APP_VERSIONs for big jobs.

- client: don't set report_results_immediately inappropriately

svn path=/trunk/boinc/; revision=22440
2010-10-01 19:54:09 +00:00
David Anderson 1c4422985f - client: add <no_info_fetch> config option and --no_info_fetch
cmdline arg.
    Suppresses the fetch of project list and of current client version #.
    Use when running on grid nodes.
- debugging on client simulator.  Not done yet.

svn path=/trunk/boinc/; revision=22414
2010-09-27 20:34:47 +00:00
David Anderson 23de5a887f - client/scheduler: tweak translatable messages
svn path=/trunk/boinc/; revision=22129
2010-08-04 18:41:24 +00:00
Rom Walton 9c37b4a844 - client: fix typo that prevented the correct link to be used for going
to the log flag configuration wiki page.
        
    client/
        log_flags.cpp

svn path=/trunk/boinc/; revision=22075
2010-07-28 17:22:58 +00:00
David Anderson ef044d6841 - client/manager: add the ability to associate URLs with
client-generated notices.
    Use this as appropriate: e.g., for errors about cc_config.xml syntax,
    direct user to the web page describing this syntax.

svn path=/trunk/boinc/; revision=22024
2010-07-21 19:04:46 +00:00
David Anderson 673d44ad0d - client: fix bug with --abort_jobs_on_exit that caused the client
to request new work on exit
- client: change "unparsed tag" to "unrecognized tag" in msgs
- client: get rid of unused var work_fetch_no_new_work

svn path=/trunk/boinc/; revision=22000
2010-07-19 16:44:43 +00:00
David Anderson ae7866b251 - scheduler: restore scaling of daily quota by # processors
and/or config.gpu_multiplier
- client: msg tweak

svn path=/trunk/boinc/; revision=21753
2010-06-15 22:21:57 +00:00
David Anderson 15047b1e4d - client: make all MSG_USER_ALERT messages (i.e., those shown as notices)
translatable (and change some MSG_USER_ALERT messages to MSG_INFO).

svn path=/trunk/boinc/; revision=21709
2010-06-08 23:37:44 +00:00
Charlie Fenton fa1c20decb client: fix compiler warning (unused variable.)
svn path=/trunk/boinc/; revision=21684
2010-06-02 23:42:53 +00:00
David Anderson eb35fc63e1 - client: code cleanup (move some config vars from CLIENT_STATE to CONFIG)
svn path=/trunk/boinc/; revision=21682
2010-06-02 18:21:30 +00:00
David Anderson 7e65e23263 - fix to last checkin
svn path=/trunk/boinc/; revision=21681
2010-06-02 18:09:05 +00:00
David Anderson cec8b2950a - client: add --fetch_minimal_work option (cmdline and config file)
If set, then:
        if there are any active jobs at startup, don't fetch more work
        otherwise make exactly 1 scheduler RPC requesting work,
        and request only enough jobs to fill all devices.
- client: --exit_when_idle: make it available in config file
    and change semantics to:
    If set: exit if
        1) there are no tasks, and
        2) either there was an active task on startup,
            or we made a scheduler RPC requesting work
    Note: if there are not active tasks on startup,
        and the client makes a work request which doesn't return work,
        it will exit.


svn path=/trunk/boinc/; revision=21680
2010-06-02 17:50:47 +00:00
David Anderson 8726c79087 - client: clear config before rereading config file.
This means that, e.g. if you remove <ncpus>
		it will revert to the actual number.
		However, it also means that any config params
		set via command line will be overridden.

svn path=/trunk/boinc/; revision=21472
2010-05-12 04:43:16 +00:00
Rom Walton 9cb3e6ffc7 - client & lib: bring header inclusion up-to-date for the CC to begin
hunting down a memory leak.
        
    client/
        <Various Files>
    lib/
        <Various Files>

svn path=/trunk/boinc/; revision=21457
2010-05-11 19:10:29 +00:00
David Anderson 7db608660f - client: standardize debug messages.
Messages enabled by <foo_debug> are prefixed by "[foo]"


svn path=/trunk/boinc/; revision=21335
2010-04-29 20:32:51 +00:00
David Anderson 7a4edbafab - client: "allow_remote_gui_rpc" is available via cc_config.xml
as well as command-line.
- client: show allow_remote_gui_rpc option,
    and contents of remote_host.cfg, in message log on startup
- client: code cleanup: move some options from
    CLIENT_STATE to OPTIONS

svn path=/trunk/boinc/; revision=21142
2010-04-07 21:11:15 +00:00
Rom Walton e14e1cad34 - Remove BOINC_RCSID tags from source files, we are doing branching and tagging
properly.
        
    <Various Files>

svn path=/trunk/boinc/; revision=20873
2010-03-12 16:51:57 +00:00
David Anderson 45b9c4518c - client: fix bug in "suspend if CPU load too high" feature.
Forgot to convert between fraction and percentage

svn path=/trunk/boinc/; revision=20651
2010-02-18 23:53:14 +00:00
David Anderson f10384af43 - client: add <stderr_head> config option;
sends the first rather than last 64KB of stderr to server.
    This doesn't belong here; this choice should come from the server.
    I may take this out later.
- user web: when add a private message, always add a notification

svn path=/trunk/boinc/; revision=20141
2010-01-12 18:39:59 +00:00
David Anderson 735e2b0448 - internal change: rename MSG_USER_ERROR to MSG_USER_ALERT
svn path=/trunk/boinc/; revision=20027
2009-12-23 18:02:40 +00:00
David Anderson 2ce0cd6a6f - client: when parsing cc_config.xml,
clear vectors so we don't end up with duplicates


svn path=/trunk/boinc/; revision=20020
2009-12-22 23:13:11 +00:00
David Anderson b0463cffae - client: more notice stuff. Add <notice_debug> log flag
svn path=/trunk/boinc/; revision=20019
2009-12-22 23:00:55 +00:00