Commit Graph

206 Commits

Author SHA1 Message Date
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 40cf0fe1ee - client: if a client has no jobs for a resource, decay its STD
for that resource by a factor of e every day

svn path=/trunk/boinc/; revision=22334
2010-09-10 00:20:08 +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 0894974aa7 Update Translations
svn path=/trunk/boinc/; revision=22275
2010-08-20 19:04:09 +00:00
David Anderson 37ce7bc349 - client: don't extra jobs for backup (resource share = 0) projects
svn path=/trunk/boinc/; revision=22148
2010-08-05 20:42:13 +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 eca79028cc - client: don't consider a result "nearly runnable"
if one of its downloads is stalled.
    This fixes a situation that can cause processor or GPU
    idleness when download servers are down for a while


svn path=/trunk/boinc/; revision=21877
2010-07-06 20:53:27 +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
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 e53fdf854b - manager: if user clicks Retry in Transfer tab while network is suspended,
show an alert.
	- manager: in transfers tab, show it if transfers are suspended
		because network is suspended
	- manager: in tasks tab, if a task is downloading or uploading
		and network is suspended, show it

svn path=/trunk/boinc/; revision=21346
2010-05-01 05:28:59 +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 b6ec320db9 - client: minor code cleanup
- manager: fix typo


svn path=/trunk/boinc/; revision=21327
2010-04-29 15:12:22 +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 12869ae674 - client: give dynamic estimate (based on fraction done)
a greater weight in time-to-completion estimate


svn path=/trunk/boinc/; revision=21040
2010-04-01 03:32:14 +00:00
David Anderson e5ac873205 - boinccmd: add --set_gpu_mode command
- fix some compile warnings


svn path=/trunk/boinc/; revision=21002
2010-03-25 23:48:58 +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 0a9f5d1433 - client: fix bug that interfered with work fetch
for particular resources in anonymous platform case.

svn path=/trunk/boinc/; revision=20755
2010-03-01 04:35:39 +00:00
David Anderson b7d48765a8 - client: if have coproc jobs but coproc is missing,
skip those jobs in RR sim.
    Otherwise we add stuff to uninitialized data structures,
    and a crash can result.
- client: initialize the above data structures anyway


svn path=/trunk/boinc/; revision=20753
2010-02-28 04:32:10 +00:00
David Anderson 6a3a03ee1a - client: don't accumulate LTD for projects w/ suspended jobs
svn path=/trunk/boinc/; revision=20630
2010-02-18 19:09:46 +00:00
David Anderson d78b5fb79a - client: if a project is anonymous platform and it has no
app versions that use a resource,
    don't request work from it for that resource.

svn path=/trunk/boinc/; revision=20549
2010-02-11 22:19:22 +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 09b92f0841 - user web: allow zero resource share
- client: allow zero resource share


svn path=/trunk/boinc/; revision=20315
2010-01-29 15:50:47 +00:00
David Anderson f716dcf7ae - client: if a project has zero resource share,
treat it as a "backup project":
    fetch work from it only if there is an idle instance
    and no other projects have work.


svn path=/trunk/boinc/; revision=20286
2010-01-28 05:21:14 +00:00
David Anderson ee889ac9dd svn path=/trunk/boinc/; revision=20284 2010-01-27 19:14:29 +00:00
David Anderson d1a3243f57 - client: fix small bug that could interfere with work fetch
on hosts with both NVIDIA and ATI GPU

svn path=/trunk/boinc/; revision=20283
2010-01-27 19:06:40 +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 ee343cea02 - client: small tweak to work fetch:
if project has crazy DCF, don't automatically request 1 sec;
    only request work if there's a shortfall.
- intermediate checkin for notices stuff

svn path=/trunk/boinc/; revision=20145
2010-01-12 21:53:40 +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 d800ae43eb - client: work fetch fix: avoid sending null request in certain cases.
- client: fix crash in notices code

svn path=/trunk/boinc/; revision=20101
2010-01-07 21:00:42 +00:00
David Anderson 21ff6cadea - client: bug in ACTIVE_TASK::est_dur()
svn path=/trunk/boinc/; revision=20084
2010-01-06 17:08:07 +00:00
David Anderson 37aae854f3 - client: scheduling problem:
- a project overestimates job FLOP counts
    - the client starts jobs in EDF mode
    - as job progresses and fraction done increases,
        its completion time estimate decreases until
        it's no longer a deadline miss.
    - job gets preempted by other job from that project;
        you end up with lots of partly completed jobs.
    Solution (I hope): if an app version has running jobs,
        compute a "temp DCF" for the app version,
        which is the min of dynamic/static estimates for its jobs.
        Apply this scaling factor to completion time estimates
        for unstarted jobs in RR simulation
- client: the estimation of remaining time of running jobs was wrong
    (how did this bug survive so long?)

svn path=/trunk/boinc/; revision=20077
2010-01-06 06:01:23 +00:00
David Anderson bf65c8ab30 - client: fix format strings for ninstances (can be fraction now)
svn path=/trunk/boinc/; revision=20075
2010-01-05 16:36:42 +00:00
David Anderson b5e47dd29b svn path=/trunk/boinc/; revision=20040 2009-12-25 15:41:14 +00:00
David Anderson 876522c6aa - 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).

svn path=/trunk/boinc/; revision=20036
2009-12-24 20:40:27 +00:00
David Anderson c145a143b1 - 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

svn path=/trunk/boinc/; revision=20034
2009-12-24 17:09:27 +00:00
David Anderson 19a69b5725 - client: maintain mean STD at zero over all projects,
not just runnable ones


svn path=/trunk/boinc/; revision=19878
2009-12-13 00:02:56 +00:00
David Anderson 1f78855ae1 - 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

svn path=/trunk/boinc/; revision=19867
2009-12-12 04:28:18 +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 ea54aa7759 - 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

svn path=/trunk/boinc/; revision=19851
2009-12-10 17:07:45 +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 b41ea18233 - 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.

svn path=/trunk/boinc/; revision=19804
2009-12-07 18:58:37 +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 e9fc909f3c - client: scale STD limit by # instances
svn path=/trunk/boinc/; revision=19784
2009-12-04 21:46:43 +00:00
David Anderson 2ef5c5895b - client: fix bug in debt calculation
- client: <zero_debts> zeroes STD too

svn path=/trunk/boinc/; revision=19783
2009-12-04 21:21:18 +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 fb4797adfd - 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

svn path=/trunk/boinc/; revision=19776
2009-12-03 19:09:45 +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 67ad130477 svn path=/trunk/boinc/; revision=19761 2009-12-01 20:36:11 +00:00
David Anderson 5ac92cdc01 - client: apply the LTD normalizing offset to all projects,
even non-debt-eligible ones.

svn path=/trunk/boinc/; revision=19758
2009-12-01 20:01:13 +00:00
David Anderson 6fc27ffc44 - client: use [wfd] consistently
svn path=/trunk/boinc/; revision=19725
2009-11-27 21:21:39 +00:00
David Anderson 56efa3ec27 - 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.

svn path=/trunk/boinc/; revision=19547
2009-11-12 17:19:50 +00:00
David Anderson 545d137804 - client: no network activity if running CPU benchmarks
svn path=/trunk/boinc/; revision=19375
2009-10-23 21:57:58 +00:00
David Anderson e86584f6cc - 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.

svn path=/trunk/boinc/; revision=19311
2009-10-16 02:48:55 +00:00
David Anderson fe2a18f282 - 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)

svn path=/trunk/boinc/; revision=19310
2009-10-16 00:13:01 +00:00
David Anderson 9f93535428 - client: bug fixes to the above.
Don't fetch work for an unable resource.

svn path=/trunk/boinc/; revision=19302
2009-10-14 19:11:11 +00:00
David Anderson 5e862ac495 - client: on startup, if a coproc needed by a job is missing,
set a "coproc_missing" flag rather than aborting the job.
        If use 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.

svn path=/trunk/boinc/; revision=19287
2009-10-12 16:28:17 +00:00
David Anderson fb14ff8a7a - 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

svn path=/trunk/boinc/; revision=19236
2009-10-03 00:19:11 +00:00
David Anderson 71c7e7a74b - 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


svn path=/trunk/boinc/; revision=19194
2009-09-28 04:24:18 +00:00
David Anderson 11c023fdc6 - work fetch tweak
svn path=/trunk/boinc/; revision=19123
2009-09-21 20:41:28 +00:00
David Anderson 7e69f86942 - client: don't print error msg if file is wrong size on startup
svn path=/trunk/boinc/; revision=19103
2009-09-18 20:49:54 +00:00
David Anderson 41e3b06b23 - 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.

svn path=/trunk/boinc/; revision=19059
2009-09-16 17:34:19 +00:00
David Anderson f5a6f862bf - 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.

svn path=/trunk/boinc/; revision=19035
2009-09-09 22:18:02 +00:00
David Anderson b129e71f20 - client: add code for faking ATI GPUs
svn path=/trunk/boinc/; revision=19024
2009-09-08 18:42:24 +00:00
David Anderson 4c52989f59 - 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.

svn path=/trunk/boinc/; revision=19003
2009-09-03 20:31:04 +00:00
David Anderson 112cec62a5 - 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

svn path=/trunk/boinc/; revision=18994
2009-09-02 21:36:25 +00:00
David Anderson 29c1751898 - 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.

svn path=/trunk/boinc/; revision=18945
2009-08-31 03:42:01 +00:00
David Anderson 7e8dadd5a3 svn path=/trunk/boinc/; revision=18940 2009-08-28 21:08:59 +00:00
David Anderson 474299d778 - client: fix work fetch log message for ATI GPU
svn path=/trunk/boinc/; revision=18939
2009-08-28 20:28:42 +00:00
David Anderson c3fe504e1d - client: add ATI support to job scheduling and work fetch
svn path=/trunk/boinc/; revision=18850
2009-08-17 16:50:40 +00:00
David Anderson 160ec8daec - client: don't try to maintain GPU work for all projects,
since use FIFO rather than RR schedling for GPUs


svn path=/trunk/boinc/; revision=18844
2009-08-14 17:17:54 +00:00
David Anderson 26114920fe - client: define "too many uploads" (for work fetch) as
2 * max(ncpus, ngpus);
    show this in the state displayed by <work_fetch_debug>
- manager: show project-wide backoff in transfers tab

svn path=/trunk/boinc/; revision=18662
2009-07-22 22:00:51 +00:00
David Anderson 5753153909 - 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.

svn path=/trunk/boinc/; revision=18629
2009-07-17 18:29:10 +00:00
David Anderson 8a1c0816ed - 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.


svn path=/trunk/boinc/; revision=18607
2009-07-16 21:21:47 +00:00
David Anderson 9ec90c409e - GUI RPC: add get_message_seqno() RPC. fixes #931
svn path=/trunk/boinc/; revision=18576
2009-07-07 22:58:58 +00:00
David Anderson d39af2afd2 - client: add a 1e-6 slop factor in deciding if
a resource is fully utilized.


svn path=/trunk/boinc/; revision=18271
2009-06-02 23:26:12 +00:00
David Anderson c2097091fe - 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

svn path=/trunk/boinc/; revision=18269
2009-06-02 22:53:57 +00:00
David Anderson 4a5b1fe673 - client: tweak to avoid -0
svn path=/trunk/boinc/; revision=18072
2009-05-11 19:07:12 +00:00
David Anderson 08aeba56ac - client: message tweak
- ops: don't import teams if using invitation codes

svn path=/trunk/boinc/; revision=17874
2009-04-24 10:49:54 +00:00
David Anderson cf638ae3a6 - client: instead of scheduling coproc jobs EDF:
- first schedule jobs projected to miss deadline in EDF order
    - then schedule remaining jobs in FIFO order
    This is intended to reduce the number of preemptions of coproc jobs,
    and hence (since they are always preempted by quit)
    to reduce the wasted time due to checkpoint gaps.
- client: the CPU scheduling policy made use of the number
    of deadline misses in various places.
    This should include only the deadline misses of CPU jobs.
    So move "deadlines_missed" from RR_SIM_STATUS and PROJECT
    to RSC_PROJECT_WORK_FETCH so that we have separate counts
    for CPU and coproc jobs, and use the count for CPU jobs.
- GUI RPC: removed the rr_sim_deadlines_missed field
    from project descriptor.
    This is no longer meaningful, and it didn't seem to be used anywhere.

svn path=/trunk/boinc/; revision=17785
2009-04-10 19:01:38 +00:00
David Anderson 837d3fc0a1 - get_project_config.php: include plan classes in platform list;
i.e., list both win/x86 and win/x86 + NVIDIA.
    This will allow the manager to show which projects can
    use the hosts's coprocessors,
    and also graying out projects that require an absent coproc.
- fix compile warnings

svn path=/trunk/boinc/; revision=17735
2009-04-03 21:55:26 +00:00
David Anderson f90871a141 - boinc_submit (single-job submission):
set the job params to reasonable values (see below),
    and make it easy to change these values in the script
- create_work (function and script): change default job params:
    FLOPs est: 1e9 => 3600e9
    FLOPs bound: 1e10 => 86400e9
    mem bound 100MB => 500MB,
    disk bound 100MB => 1GB
    delay bound: 100000s => 1 week

svn path=/trunk/boinc/; revision=17703
2009-03-30 18:38:11 +00:00
David Anderson 62ac6358e6 - client: typo in work fetch code; may cause minor errors
svn path=/trunk/boinc/; revision=17691
2009-03-28 04:20:44 +00:00
David Anderson 3e04801942 - client: clear resource backoffs on user-requested RPC
- client: randomize resource backoffs to avoid lockstep

svn path=/trunk/boinc/; revision=17664
2009-03-26 16:56:20 +00:00
David Anderson 5d6fc98de3 - client: give highest work-fetch priority to resources with idle instances
svn path=/trunk/boinc/; revision=17660
2009-03-25 16:59:59 +00:00
David Anderson 7e256c0995 - client: work fetch: in RR sim, keep track of the number
of device instances used by jobs that miss deadline.
    Don't do "variety" work fetch if this is >= # of instances

svn path=/trunk/boinc/; revision=17631
2009-03-19 16:55:04 +00:00
David Anderson 88a4482894 - client: consider fetching work from overworked projects
if resource is saturated for < work_buf_min()
    (rather than saturated for 0).
    So now the only significance of "overworked" is that we
    won't ask overworked projects for work if resource is saturated
    more than work_buf_min() but less than work_buf_total()

svn path=/trunk/boinc/; revision=17620
2009-03-18 15:53:02 +00:00
David Anderson ce62c8ace5 - client: fix message: "idle instance" => "starved"
svn path=/trunk/boinc/; revision=17451
2009-03-03 17:45:03 +00:00
David Anderson ebbf9d5636 - client: if we're going to do a scheduler RPC for reasons
other than work fetch (e.g., user request, project request)
    temporarily clear resource backoffs while deciding
    whether to request work.
    The backoffs are there only to delay RPCs,
    and we're going an RPC anyway.

svn path=/trunk/boinc/; revision=17416
2009-03-01 18:11:18 +00:00
David Anderson 346ac348b3 - client: RR sim FLOPS estimate for GPU jobs should reflect
fraction of time BOINC is running.


svn path=/trunk/boinc/; revision=17412
2009-02-27 21:44:39 +00:00
David Anderson fd5fc4a24b - client: fix bug that could cause scheduler RPC
to ask for work inappropriately,
    and tell user that it wasn't asking for work.
    Here's what was going on:
    There are two different structures with work request fields
    (req_secs, req_instances, estimated_delay):
    COPROC_CUDA *coproc_cuda
    and
    RSC_WORK_FETCH cuda_work_fetch.
    WORK_FETCH::choose_project() copied from cuda_work_fetch to coproc_cuda,
    but only if a project was selected.
    WORK_FETCH::clear_request() clears cuda_work_fetch but not coproc_cuda.

    Scenario:
    - a scheduler op is made to project A requesting X>0 secs of CUDA
    - later, a scheduler op is made to project B for reason
        other than work fetch (e.g., user request)
    - choose_project() doesn't choose anything,
        so the value of coproc_cuda->req_secs remains X
    - clear_request() is called but that doesn't change *coproc_cuda

    Solution: work-fetch code no longer knows about internals of
        COPROC_CUDA and is not responsible for settings its request fields.
        The copying of request fields from RSC_WORK_FETCH to COPROC
        is done at a higher level,
        in CLIENT_STATE::make_scheduler_request()

    Additional bug fix: estimated_delay wasn't being cleared in some cases.


svn path=/trunk/boinc/; revision=17411
2009-02-27 18:46:00 +00:00
David Anderson 41fe3e40bf - client: tag messages with project where possible; fixes #852
- client: show fetch share rather than run share in wfd message

svn path=/trunk/boinc/; revision=17398
2009-02-26 17:12:55 +00:00
David Anderson 125c90d1da - client: work-fetch bug fix: if we're fetching work for a starved
project, it most have no runnable jobs for ANY resource.
- client: work-fetch bug fix: when setting requests in the
    shortfall case, don't request anything if project is backed off
    or overworked for the resource.

svn path=/trunk/boinc/; revision=17338
2009-02-23 21:34:13 +00:00
David Anderson f257101d36 - client: fix work-fetch bug that caused infinite fetch;
cleanup/reorganization of work fetch logic

svn path=/trunk/boinc/; revision=17337
2009-02-23 20:35:52 +00:00
David Anderson 7001c6f7c5 - client: tweak the LTD calculation so that the largest debt
always tends towards zero

svn path=/trunk/boinc/; revision=17333
2009-02-22 15:40:44 +00:00
David Anderson 3b31a9d803 - client: remove the "debt repair" mechanism added earlier today.
There are situations where multiple projects can legitimately
    have large negative LTD on a uniprocessor.
    Instead...
- client: add <zero_debts> option to cc_config.xml

svn path=/trunk/boinc/; revision=17328
2009-02-20 22:16:03 +00:00
David Anderson 6241fff21f - client: new work-fetch policy:
1) if an instance is idle, get work from highest-debt project,
        even if it's overworked.
    2) if resource has a shortfall, get work from highest-debt
        non-overworked project
    3) if there's a fetchable non-overworked project with no runnable jobs,
        get from from the highest-debt one.
    (each step is done first for GPU, then CPU)
    Clause 3) is new.
    It will cause the client to get jobs for as many projects as possible,
    even if there is no shortfall.
    This is necessary to make the notion of "overworked" meaningful
    (otherwise, any project with long jobs can become overworked).
    It also maintains as much variety as possible (like pre-6.6 clients).

    Also (small bug fix) if a project is overworked for resource R,
    request work for R only in case 1).


svn path=/trunk/boinc/; revision=17327
2009-02-20 21:44:39 +00:00