Commit Graph

138 Commits

Author SHA1 Message Date
David Anderson 49f3c1aa61 client: bug fixes
svn path=/trunk/boinc/; revision=21571
2010-05-18 21:11:35 +00:00
David Anderson eeee6ed228 - client: fix error in GPU confirm message (it always said 0)
svn path=/trunk/boinc/; revision=21568
2010-05-18 20:21:14 +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 5a8142a23c - client: don't promote multithread jobs ahead of EDF jobs
svn path=/trunk/boinc/; revision=21563
2010-05-18 16:45:55 +00:00
David Anderson 515abee470 - client/manager: keep track of "GPU suspended reason".
Report it to the manager
    (it was already in CC_STATUS, but not populated)
- manager: fix system tray icon popup text

svn path=/trunk/boinc/; revision=21481
2010-05-12 18:14:30 +00:00
David Anderson 9d8b915cc4 - client: fix crashing bug.
Deleting records in ~COPROCS() was bad,
		since we copy HOST_INFO to APP_INIT_DATA,
		leading to a double deletion.

svn path=/trunk/boinc/; revision=21475
2010-05-12 17:02:57 +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
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 9619791ad3 - user web: more cleanup of prefs.inc
- client: code cleanup


svn path=/trunk/boinc/; revision=21267
2010-04-23 17:46:57 +00:00
Rom Walton ec04f5dcbd - CC: Reduce how often the client reports the amount of available
VRAM to once every 60 seconds.

    client/
        coproc_detect.cpp
        cpu_sched.cpp
    lib/
        coproc.h

svn path=/trunk/boinc/; revision=21264
2010-04-23 16:47:07 +00:00
David Anderson bede9972b1 - client: fix bug with NVIDIA GPUs.
Some of them allow only 1 CUDA context at a time.
    You need to create a CUDA context to get available VRAM.
    So the client would run a CUDA job, then immediately kill it.
    Solution:
    - If a GPU app is running,
        let it keep running regardless of available VRAM
        (if it's still running, it has enough VRAM).
    - But don't start new apps if there's not enough available VRAM,
        or it the amount is unknown
        (if the client can't create a CUDA context,
        the app won't be able to either)
- client: if <coproc_debug> is set, print available GPU RAM periodically

svn path=/trunk/boinc/; revision=21253
2010-04-22 17:45:33 +00:00
David Anderson 2ab7dbfc65 - client: bug fixes for the above
svn path=/trunk/boinc/; revision=21243
2010-04-22 02:57:50 +00:00
David Anderson 71ecfd47a0 svn path=/trunk/boinc/; revision=21226 2010-04-21 04:00:17 +00:00
David Anderson 678d880c64 - client: clean up logic related to GPU available memory.
If a driver call to get available mem fail, mark the GPU as unusable.


svn path=/trunk/boinc/; revision=21210
2010-04-19 18:35:10 +00:00
David Anderson d4bb95d5a6 - client: when a GPU job finishes, clear the "schedule backoff"
of other jobs of that type.
		They're waiting for GPU RAM, which may now be available.
	- client: bug fix in GPU RAM availability
	- client: fix testing setup for GPU RAM availability

svn path=/trunk/boinc/; revision=21206
2010-04-18 05:29:29 +00:00
David Anderson 01402bb45a - client: improve GPU scheduling
old: assign GPUs, then check available RAM
        Problem: may cause starvation on multi-GPU systems.
    new: use available RAM info in the assignment process.
        Prevents starvation, also reduces the number of driver calls.

svn path=/trunk/boinc/; revision=21205
2010-04-18 03:00:33 +00:00
David Anderson be0d0c7d71 - client: fix bug in mechanism that inhibits work fetch
for a GPU if it lacks available memory

svn path=/trunk/boinc/; revision=21197
2010-04-16 21:56:58 +00:00
David Anderson a92b7a5c32 - client: attempt to fix bug where a GPU would be assigned
to multiple jobs at the same time.
    I fixed one error (reference arg to assign_coprocs())
    but I can't see why this would explain the problem.
    I added a lot of extra <coproc_debug> log messages.
- user web: give scientists moderator privileges

svn path=/trunk/boinc/; revision=21158
2010-04-09 20:27:42 +00:00
David Anderson 3925d39870 - Client: fix bug that caused wrong jobs to be run EDF
(needed to initialize a var inside loop, not outside)


svn path=/trunk/boinc/; revision=21085
2010-04-05 02:23:01 +00:00
David Anderson d6ce6ca0b7 - client: we weren't marking GPU jobs as EDF-scheduled
svn path=/trunk/boinc/; revision=20879
2010-03-12 18:17:55 +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 4f77556c74 - client: if a GPU job is blocked on available mem,
don't fetch more jobs for that resource type

svn path=/trunk/boinc/; revision=20817
2010-03-10 06:00:37 +00:00
David Anderson b415b07785 - client: revisit the domino-effect preemption problem.
Removed my changes of 19 Jan 2010, which didn't work.
    Added new mechanism: keep track of whether a job J has ever run in EDF.
    If so, and if another job of the same project and resource type as J
    is marked as deadline miss, then mark J as deadline miss,
    so that it won't get preempted.
- web: change "result" to "task" in server status page
- admin web: show server stable SVN revision, not trunk

svn path=/trunk/boinc/; revision=20805
2010-03-05 21:13:53 +00:00
David Anderson 9020d0b715 - server: if MySQL version is 5.0.19 <= v < 5.1,
set the reconnect option before real_connect() instead of after.
    From Oliver Bock.

svn path=/trunk/boinc/; revision=20763
2010-03-01 19:12:19 +00:00
David Anderson 1fd5b96d34 - client: undo [17160]. <ncpus>0</ncpus> in cc_config.xml
no longer means simulate zero CPUs.
		There are several places that divide by ncpus.
		Zero CPUs doesn't make any sense anyway.

svn path=/trunk/boinc/; revision=20474
2010-02-09 17:25:14 +00:00
David Anderson 902225c49a - win build fix
svn path=/trunk/boinc/; revision=20314
2010-01-29 15:28:59 +00:00
David Anderson 0f1801409f client bug fixes
svn path=/trunk/boinc/; revision=20224
2010-01-21 00:35:00 +00:00
David Anderson b5124fe729 - client: brute-force attempt at eliminating domino-effect preemption:
if job A is unstarted and EDF,
    and there's a job B that is later in the list,
    is started, has the same app version,
    and has the same arrival time,
    move A after B.
- client: remove the "temp_dcf" mechanism,
    which had the same goal but didn't work.
- client: in computing overall debt for a project,
    subtract a term that reflects pending work.
    This should reduce repeated fetches from the same project.
- client simulator: tweaks

svn path=/trunk/boinc/; revision=20223
2010-01-21 00:14:56 +00:00
David Anderson eeffc6de96 - web: translation fix from Nicolas:
"There is a bug in tra() that causes problems if one of the arguments
    contains a replacement marker itself. For example, if the first
    argument contains an encoded URL, which contains '%2', the second
    argument may appear in the middle of the URL."
- client simulator: further fiddling around.  Not done.

svn path=/trunk/boinc/; revision=20201
2010-01-19 23:01:09 +00:00
David Anderson e7dcff182f - web DB code: fix PHP warning when enumeration returns nothing.
From Nicolas. fixes #974
- client: tiny code shuffle

svn path=/trunk/boinc/; revision=20178
2010-01-15 23:08:55 +00:00
David Anderson 9f50df7e3e - win compile fixes
svn path=/trunk/boinc/; revision=19989
2009-12-19 17:21:37 +00:00
David Anderson 4b0cae80f5 - client: in computing "anticipated" STD, scale by ninstances
(from John McLeod)

svn path=/trunk/boinc/; revision=19959
2009-12-17 23:32:21 +00:00
David Anderson 9070c5ed56 - client: there are oddball cases where the client has an app for which
avg_ncpus > ncpus.   Allow such jobs to run; otherwise nothing runs.

svn path=/trunk/boinc/; revision=19958
2009-12-17 23:30:42 +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 a151ad6cb3 - 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).

svn path=/trunk/boinc/; revision=19864
2009-12-11 22:45:59 +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
David Anderson e9a4debf9c - 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

svn path=/trunk/boinc/; revision=19826
2009-12-08 20:39:46 +00:00
David Anderson 6b937c7e54 - more code shuffle: add COPROCS to HOST_INFO
svn path=/trunk/boinc/; revision=19797
2009-12-07 01:21:42 +00:00
David Anderson 5ff3c7e4c9 svn path=/trunk/boinc/; revision=19796 2009-12-07 00:53:32 +00:00
David Anderson b70229c093 - code shuffle: move client-specific GPU code to a separate file
svn path=/trunk/boinc/; revision=19794
2009-12-07 00:42:03 +00:00
David Anderson 09759104f4 compile fixes, message tweaks
svn path=/trunk/boinc/; revision=19778
2009-12-03 23:27:32 +00:00
David Anderson 2d4ceb618a - 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)

svn path=/trunk/boinc/; revision=19777
2009-12-03 23:09:25 +00:00
David Anderson ce3f3f1cfe - client: fix divide-by-zero bug in STD code
- fix compile warnings

svn path=/trunk/boinc/; revision=19775
2009-12-03 18:51:23 +00:00
David Anderson ba3c7f0f7b svn path=/trunk/boinc/; revision=19763 2009-12-02 04:47:42 +00:00
David Anderson 59328aaccb - 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.

svn path=/trunk/boinc/; revision=19762
2009-12-02 03:41:52 +00:00
David Anderson 5a1e53ec7b svn path=/trunk/boinc/; revision=19760 2009-12-01 20:32:34 +00:00
David Anderson ac20f899b5 - client: message tweak
svn path=/trunk/boinc/; revision=19759
2009-12-01 20:30:43 +00:00
David Anderson 91a7b38b2b - 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.

svn path=/trunk/boinc/; revision=19726
2009-11-28 00:07:39 +00:00
David Anderson 14fd0a3f33 - client: show more general prefs on startup
- manager: show status for jobs aborted because not started by deadline

svn path=/trunk/boinc/; revision=19678
2009-11-23 22:47:10 +00:00