Commit Graph

426 Commits

Author SHA1 Message Date
David Anderson bba4ce24ce - client: compute projects' disk share (based on resource share).
Report it (along with disk usage) in scheduler request messages.
    This will allow the scheduler to send file-delete commands
    if the project is using more than its share.
- client: add <disk_usage_debug> log flag
- create_work: add --help, show --command_line option


svn path=/trunk/boinc/; revision=24968
2012-01-02 05:53:42 +00:00
David Anderson fc6d530a6c - client: shuffle disk usage code in preparation for disk accounting
- use new XML parser in some GUI RPC code


svn path=/trunk/boinc/; revision=24925
2011-12-28 14:52:03 +00:00
David Anderson 5c02170d5a - storage simulator: add stats for network load and fault tolerance.
- client: msg tweak
- client: minimum work buffer lower bound is 180 sec
- scheduler: in computing HOST_USAGE::project_flops for a job,
    if we don't have sufficient elapsed_time statistics
    for either the (host, app_version) or the app_version,
    use a conservative estimate (p_fpops*(#cpus+#ngpus))
    rather than the number returned by app_plan().
    This avoids "time limit exceeded" errors when the latter is way off.


svn path=/trunk/boinc/; revision=24820
2011-12-16 19:45:31 +00:00
David Anderson c317f4b721 - client: attempt to fix bug reported by John McLeod,
where the client crashes after giving up (90 day timeout) on an upload.
    I'm guessing this was caused by [24391],
    which changed the order in the poll loop from
        garbage_collect
        file_xfers->poll
        pers_file_xfers->poll
        handle_pers_file_xfers
    to
        garbage_collect
        handle_pers_file_xfers
        file_xfers->poll
        pers_file_xfers->poll
    I don't understand why this would have caused a crash,
    but so be it.
    I restored the original order, but with handle_pers_file_xfers
    not inside the if (!network_suspended).
- client renamed handle_pers_file_xfers() to
    create_and_delete_pers_file_xfers()
- client simulator: show simulator CPU time


svn path=/trunk/boinc/; revision=24531
2011-11-04 20:25:30 +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 f81cb82b8e - client: make RR simulation more accurate
by simulating time-slicing explicitly.
    Also simulate changes in project REC
    and hence in scheduling priority.
- client: add a log flag "rrsim_detail" that prints
    time-slice-level info.


svn path=/trunk/boinc/; revision=24161
2011-09-12 17:01:54 +00:00
David Anderson 3fe4507e37 - client: make exit_before_start a cc_config.xml option
(as well as a cmdline option)
- wrapper: print error messages if stdin/out/err files don't exist


svn path=/trunk/boinc/; revision=24143
2011-09-07 22:45:00 +00:00
David Anderson cceea7f6d4 - client: rename MODE to RUN_MODE, and rename vars accordingly
svn path=/trunk/boinc/; revision=23974
2011-08-09 20:41:15 +00:00
David Anderson ce215299e6 - client (Win) add some bulletproofing in case Windows sends us a
"suspending" event but not a resume event.


svn path=/trunk/boinc/; revision=23786
2011-07-01 00:25:11 +00:00
David Anderson 2177a6bd95 - server: restore fpops/intops_cumulative to RESULT
(structure, not table) for AQUA
- client, Windows: when wake up from hibernation,
    get the time before printing log msg


svn path=/trunk/boinc/; revision=23784
2011-06-29 23:00:39 +00:00
David Anderson d27c3448fc - client: don't check memory usage immediately after hibernation
svn path=/trunk/boinc/; revision=23519
2011-05-10 15:55:47 +00:00
David Anderson 17c2dd9ae6 - client: don't use the Snooze mechanism to handle
OS-requested suspension
    (especially with a 1-hour snooze period).
    Instead, handle them directly.


svn path=/trunk/boinc/; revision=23420
2011-04-23 19:02:17 +00:00
David Anderson 6b0eba4641 - create_work and other tools: verify that the current dir,
parent dir, or BOINC_PROJECT_DIR actually is a project dir.
- client simulator: improvements


svn path=/trunk/boinc/; revision=23415
2011-04-21 17:04:42 +00:00
David Anderson 654f2468f6 - client: replace % with %% in messages from scheduler
(else they're interpreted as format strings)


svn path=/trunk/boinc/; revision=23379
2011-04-19 05:07:08 +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 4f7ceb2334 - client: remove auto update stuff from makefiles.
This feature is mothballed.


svn path=/trunk/boinc/; revision=23103
2011-02-24 22:18:14 +00:00
David Anderson 6e21bd3633 - client: in the loop that starts up apps,
check if we've been in the loop for 10 sec.
    If so, break out of it and reschedule.
    Avoid starving GUI RPCs and heartbeats.

svn path=/trunk/boinc/; revision=23094
2011-02-23 05:03:33 +00:00
David Anderson c558b15f37 - client: wait 15 seconds (instead of 5) for an app to exit
before killing it.
    Apparently some apps take ~10 sec on slow computers.


svn path=/trunk/boinc/; revision=23093
2011-02-23 04:48:09 +00:00
David Anderson 28bad727c1 - client: when exclusive app mechanism is used (CPU or GPU)
wait for 30 secs after excl app exits
    before restarting computation


svn path=/trunk/boinc/; revision=23048
2011-02-16 20:41:19 +00:00
David Anderson c4ee1bdd89 - client: code cleanup in CPU scheduling;
eliminate global variable


svn path=/trunk/boinc/; revision=22908
2011-01-16 07:40:09 +00:00
David Anderson f903c7cfc4 - client: tweak [22842] so that system clock changes
of < 60 seconds are ignored

svn path=/trunk/boinc/; revision=22897
2011-01-12 18:14:15 +00:00
David Anderson f3169fb77a - client: initial, partial checkin for hysteresis work-fetch
svn path=/trunk/boinc/; revision=22853
2010-12-23 23:39:30 +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 4f3d628e29 - client: if detect that system clock has been set backwards
(either at startup or during execution)
    reset a number of "wait until X" variables;
    otherwise we might wait years to contact a project, restart a file xfer, etc.
    Notes:
    - there is no problem setting clocks forward; things just happen prematurely
    - some variables (e.g. task deadlines) are not reset,
        because it's not clear what to set them to
- sched: remove ati_opencl plan class until we understand what it is


svn path=/trunk/boinc/; revision=22842
2010-12-17 01:30:01 +00:00
David Anderson 18f2e90929 - client: work fetch: if the chosen project is currently uploading a file,
and an upload started in the last 5 min, don't fetch work from it.
    The goal is to merge the 2 scheduler RPCs
    (fetch work, report completed taskS) into a single RPC.
    Note: this may result in idleness in some cases.
- scheduler: if client doesn't handle plan class (pre-5.10),
    check plan-class app versions anyway,
    but only use if it's a single-CPU app.
    This allows single-CPU app versions with specific requirements
    (like SSE) to be issued to old clients.
    From Bernd Machenschalk


svn path=/trunk/boinc/; revision=22841
2010-12-13 22:58:15 +00:00
David Anderson 2b67ec4ad9 - client: fix major bug in job scheduling
Old: scheduling has 2 phases:
        1) computing a list of jobs to run (a vector of RESULT*);
            this is done infrequently
        2) enforcing the schedule; this is done more frequently
    Problem:
        when we enforce the schedule,
        the RESULTs in the jobs-to-run list may not still be runnable,
        and in fact they may not still exist (dangling pointer).
    New: combine the 2 phases


svn path=/trunk/boinc/; revision=22792
2010-12-01 21:49:35 +00:00
David Anderson a129c0d8cd - client: do exponential backoff (from 10 min to 24 hours)
on account manager RPC failures,
    rather than always waiting 24 hours

svn path=/trunk/boinc/; revision=22747
2010-11-25 04:35:50 +00:00
David Anderson dd2d5bd63f - client: on startup, generate a message and notice
about new client version if needed

svn path=/trunk/boinc/; revision=22549
2010-10-18 20:31:27 +00:00
David Anderson c9be64765c - client: use project STD, rather than arrival time,
as the major criterion in choosing non-EDF GPU jobs.
    GPU scheduling now respects resource share,
    and as a result STD should no longer diverge.
- client simulator: various improvements, most notably
    that we now generate gnuplot graphs of all debt types

NOTE: the client problem was found and fixed using the simulator!


svn path=/trunk/boinc/; revision=22536
2010-10-15 20:16:00 +00:00
David Anderson 56ff7cf37f - client simulator: get it to work for GPU simulation
- web: small fixes to mollify skipfish

svn path=/trunk/boinc/; revision=22485
2010-10-08 23:18:12 +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 aeaac7026b - client: remove debugging code accidentally left in
svn path=/trunk/boinc/; revision=22443
2010-10-04 18:38:59 +00:00
David Anderson 794214208f - validator: if credit calculation returns an error,
wait 6 hours before retrying

svn path=/trunk/boinc/; revision=22418
2010-09-28 20:17:09 +00:00
David Anderson 31db3207e4 - client: fix bug that cause wasted scheduler RPC
Old: when a job finished, we cleared the backoffs for the
        resources it used.  The idea was to get more jobs
        immediately in the case where the client was at
        a jobs-in-progress limit.
    Problem: this resulted in an RPC immediately,
        typically before the output files were uploaded.
        So the client is still at the limit, and doesn't get jobs.
    New: clear the backoffs at the point when output files
        have been uploaded and the job is ready to report.
- client: change range in resource backoff from (0,x) to (.5, 1.5*x)


svn path=/trunk/boinc/; revision=22411
2010-09-24 21:24:02 +00:00
David Anderson fcbb8a286e - client simulator: major remodel and upgrade.
Insteady of using its own XML input files,
    the simulator now takes a client_state.xml file as input.
    The simulator generates a synthetic workload based on the
    projects, apps, app versions, WUs, and result it finds there.

    This means that a user seeing aberrant behavior
    can just send their client_state.xml file
    and (hopefully) we can use the simulator to repro.

    The simulator now can model GPUs.

    As of this checkin, the simulator compiles but doesn't work.
    There should be no change in the actual client.


svn path=/trunk/boinc/; revision=22409
2010-09-24 20:02:42 +00:00
David Anderson fdf15fb3af - client: maintain "gpu_active_frac" in addition to "active_frac"
(which really means CPU active)

svn path=/trunk/boinc/; revision=22283
2010-08-23 05:00:22 +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 ec2c92665a - client: change the calculation of exponential backoff used for
1) individual file transfers
    2) project-level file transfer backoff
    3) scheduler operations
    Old: scale by e.
        Use random backoff in the range min..x
    New: scale by 2.
        Use random backoff in the rand x/2..x
- client: for file transfers, use backoff range of 10 min .. 12 hrs
    rather than 1 min .. 4 hrs


svn path=/trunk/boinc/; revision=21887
2010-07-09 19:24:13 +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 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 40eebe00af - client/scheduler: in COPROCS, instead of having a vector of
pointers to dynamically allocated COPROC-derived objects,
    just have the objects themselves.
    Dynamic allocation should be avoided at all costs.

svn path=/trunk/boinc/; revision=21564
2010-05-18 19:22:34 +00:00
David Anderson 22840960f5 - client: on resume from net bandwidth quota suspend,
apply same random backoff to all transfers.
- client: when changing ncpus via config file,
    don't modify host_info.p_ncpus
- client: show effective #CPUs separately from physical #

svn path=/trunk/boinc/; revision=21470
2010-05-12 04:00:14 +00:00
David Anderson 06cb521bbe - manager: improve "suspended" messages for tasks and transfers
- manager: code reorg.  ViewTransfers and DlgItemProperties
		both had a long member function to generate a string describing a task.
		One of these was out of date.
		Replaced these with a single non-member function.
	- manager: fixed sizer problem in attach wizard that caused missing word
	- client: minor code reorg

svn path=/trunk/boinc/; revision=21412
2010-05-07 16:14:54 +00:00
David Anderson 26c0814d26 - client: clean up network suspension logic.
There are now separate flags for
    "file_xfers_suspended": don't do file transfers
    "network_suspended": don't do any network comm
        (scheduler RPCs, RSS fetch, master fetch, etc.)
    The policy:
    if preferences/settings say no network
    (quota exceeded, no-network mode, user active, time, excl. app)
    then:
        file_xfers_suspended = true
        if (no recent network-related RPC) network_suspended = true
- user web: code cleanup for project prefs

svn path=/trunk/boinc/; revision=21299
2010-04-26 19:31:28 +00:00
David Anderson 15f0b193e9 - client: keep track of daily history of network transfers
svn path=/trunk/boinc/; revision=21238
2010-04-21 22:05:55 +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
David Anderson b0cb81159f - client: when looking for new file xfers to start,
favor those that are partially done
- client: fix crashing bug if a project is detached
    while an RSS feed fetch for it is in progress
- code cleanup: switch from /// back to // for comments
    (so much for doxygen)

svn path=/trunk/boinc/; revision=21041
2010-04-01 05:54:29 +00:00
David Anderson d6b6f8d5db - client (Mac): append /usr/local/cuda/lib to LD_LIBRARY_PATH
and DYLD_LIBRARY_PATH
- client simulator: compile fixes

svn path=/trunk/boinc/; revision=20117
2010-01-09 16:41:17 +00:00
David Anderson 92294d06e7 - client: fix bug in insufficient video RAM feature
- client: improve CPU sched debug msgs
	- client: fix "temporary exit" feature

svn path=/trunk/boinc/; revision=19900
2009-12-14 19:24:06 +00:00
David Anderson 8182ccd031 - client/manager: first whack at a "snooze GPU" button
svn path=/trunk/boinc/; revision=19853
2009-12-10 23:26:35 +00:00