Commit Graph

206 Commits

Author SHA1 Message Date
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
David Anderson f7f2f85b79 - client: if a project is at max backoff for a resource,
stop accumulating debt if it's at or around zero.
        This prevents other projects from being driven unboundedly negative.
    - client: if the number of overworked projects exceeds the number
        of device instances, clear debts; this indicates that an earlier
        client was buggy and produced bad debt values.

svn path=/trunk/boinc/; revision=17325
2009-02-20 18:37:27 +00:00
David Anderson ddb3d902c6 - client: message tweak
svn path=/trunk/boinc/; revision=17313
2009-02-19 21:51:13 +00:00
David Anderson 9e9a0effeb svn path=/trunk/boinc/; revision=17312 2009-02-19 21:45:33 +00:00
David Anderson bcefac3667 - client: message tweak
svn path=/trunk/boinc/; revision=17311
2009-02-19 21:42:43 +00:00
David Anderson 72c57735eb - client: add more info to <work_fetch_debug> messages
svn path=/trunk/boinc/; revision=17309
2009-02-19 21:32:54 +00:00
David Anderson 3e98909ab6 - client: adjust debts at least every minute.
This fixes a bug that can cause debts to NEVER get updated.
- client: added "abort_jobs_on_exit" feature
    (available by --abort_jobs_on_exit cmdline
    or <abort_jobs_on_exit> in cc_config.xml).
    If set, when the client is exited by user request
    (this includes signals on Unix)
    it marks all pending jobs as aborted,
    and does a scheduler RPC to all projects with jobs.
    When these are completed the client exits.
    This is useful when BOINC is being used on grids
    where it is wiped clean after each run.

svn path=/trunk/boinc/; revision=17300
2009-02-18 19:47:02 +00:00
David Anderson b4bac32d75 - client: if "no more work" checked, don't request more work (duh!)
svn path=/trunk/boinc/; revision=17290
2009-02-18 16:21:30 +00:00
David Anderson 15e9a87315 - client: add a debug flag <dcf_debug> for seeing changes in DCF
- scheduler: add a limit on NVIDIA driver version for CUDA apps
    (default 17500)

svn path=/trunk/boinc/; revision=17277
2009-02-17 03:16:25 +00:00
David Anderson 57bf393544 - client: debt_eligible() was returning false if the backoff was max.
This can lead to a situation where a project never gets work.
    Remove that clause.

svn path=/trunk/boinc/; revision=17226
2009-02-12 16:28:28 +00:00
David Anderson cc81331dd4 - client: change the formula for debt update
so that largest debt among eligible projects tends towards zero
    - client: change definition of "overworked"; debt must be < 1 day

svn path=/trunk/boinc/; revision=17206
2009-02-11 19:07:34 +00:00
David Anderson 872ed1a65c - client: if master file doesn't have URLs, clear RPC request
svn path=/trunk/boinc/; revision=17196
2009-02-10 19:33:46 +00:00
David Anderson 864864ab76 - client: all scheduler RPCs except user request are subject to backoff.
- client: if a project-requested RPC doesn't return work,
    don't do resource backoff.
- client: if a user-requested scheduler RPC errors out, clear the request

svn path=/trunk/boinc/; revision=17191
2009-02-09 22:00:31 +00:00
David Anderson af86d4326f - client: when accounting job elapsed time,
ignore intervals longer than 10 secs;
    that could only happen if the client or host was suspended/hibernated.
- client: in adjust_debts(), ignore intervals longer than
    2*work fetch period, not 2*CPU sched period.
    adjust_debts() is called from work fetch.

svn path=/trunk/boinc/; revision=17154
2009-02-05 20:16:28 +00:00
David Anderson 3ad73d70ba - client: redefine "overworked" as
debt < -1.5 * work_buf * cpu_sched_period
- web: on team page, link to cross-project team stats sites

svn path=/trunk/boinc/; revision=17152
2009-02-05 19:40:01 +00:00
David Anderson a4a2a68f7d - fix tabs
svn path=/trunk/boinc/; revision=17101
2009-02-02 18:47:34 +00:00
David Anderson 9f170696a4 - client: code cleanup
svn path=/trunk/boinc/; revision=17100
2009-02-02 18:45:00 +00:00
David Anderson 6120b02306 - client: code cleanup
svn path=/trunk/boinc/; revision=17098
2009-02-02 05:15:12 +00:00
David Anderson 89188fca84 - client: there was a problem with how the round simulator
worked in the presence of coprocessors.
    The simulator maintained per-project queues of pending jobs.
    When a job finished (in the simulation) it would get
    one or more jobs from that project's pending queue.

    The problem: this could cause "holes" in the scheduling of GPUs,
    and produce an erroneous nonzero shortfall for GPUs,
    leading to infinite work fetch.

    The solution: maintain a separate (per-resource, not per--project)
    queue of pending coprocessor jobs.
    When a coprocessor job finishes,
    start pending jobs from the queue for that resource.

    Another change: the simulator did strict reservation of coprocessors.
    If there are 2 instances of CUDA,
    and a 1-instance job is running in the simulation,
    it wouldn't start an additional 2-instance job.
    This also can cause erroneous nonzero shortfalls.

    So instead, schedule coprocessors like CPUs, i.e. saturate them.
    This can cause distorted completion time estimates,
    but it's better than infinite work fetch.

svn path=/trunk/boinc/; revision=17093
2009-02-01 04:37:19 +00:00
David Anderson be31245c82 - client: work fetch fixes
svn path=/trunk/boinc/; revision=17090
2009-01-31 00:20:13 +00:00
David Anderson 8de66223fd - client: tweak work fetch messages
- client: buffer 2000 messages instead of 1000

svn path=/trunk/boinc/; revision=17089
2009-01-30 22:33:45 +00:00
David Anderson b7a2c227ca - Work fetch / scheduler:
There are two mechanisms to prevent the scheduler from
    sending jobs that won't finish by their deadline.
    Simple mechanism:
        The client sends the interval x for which CPUs are projected
        to be saturated.
        Given a job with estimated duration y,
        the scheduler doesn't send it if x + y exceeds the delay bound.
        If it does send it, x is incremented by y.
    Complex mechanism:
        Client sends workload description.
        Scheduler does EDF simulation, sees if deadlines are missed.
        The only project using this AFAIK is BOINC alpha test.
    Neither of these mechanisms takes coprocessors into account,
    and as a result jobs could be sent that are doomed to
    miss their deadline.
    This checkin adds coprocessor awareness to the Simple mechanism.

    Changes:
    Client:
        compute estimated delay (i.e. time until non-saturation)
        for coprocessors as well as CPU.
        Send them in scheduler request as part of coproc descriptor.
    Scheduler:
        Keep track of estimated delays separately for different resources
- client: fixed bug that computed CPU estimated delay incorrectly
- client: the work request (req_secs) for a resource is the min
    of the project's share and the shortfall.

svn path=/trunk/boinc/; revision=17086
2009-01-30 21:25:24 +00:00
David Anderson ca7b1cd8e4 - client: update LTD correctly
svn path=/trunk/boinc/; revision=17074
2009-01-29 22:00:55 +00:00
David Anderson 604a83aa96 - client: if user requests RPC, do it even if project is backed off
- manager: show backoff interval correctly

svn path=/trunk/boinc/; revision=17070
2009-01-29 20:07:48 +00:00
David Anderson 195c0403b7 - scheduler: don't count host as reliable if avg_turnaround is zero
- client: restore notion of overworked;
    if a project is overworked for a resource R,
    don't fetch work for R unless there are idle instances

svn path=/trunk/boinc/; revision=17057
2009-01-28 04:58:01 +00:00
David Anderson 51b468dfc8 - client: remove the "deadlines_missed" and "overworked"
clauses from RSC_WORK_FETCH::choose_project()


svn path=/trunk/boinc/; revision=17056
2009-01-27 23:40:42 +00:00
David Anderson 8952fbe60e - client: if we're making an RPC to a project because of user request,
clear the resource backoff times so that we potentially
        can ask the project for work.

svn path=/trunk/boinc/; revision=17052
2009-01-27 22:25:32 +00:00
David Anderson 3eee24d83a svn path=/trunk/boinc/; revision=17032 2009-01-27 19:02:32 +00:00
David Anderson d23d481c63 - client: change the LTD policy so that
1) net adjustment for eligible projects is zero;
    2) max LTD is zero
- scheduler: fix msgs so disk size is shown in GB

svn path=/trunk/boinc/; revision=17031
2009-01-27 18:57:27 +00:00
David Anderson 1312f3fac9 - client: if we're doing an RPC (for whatever reason)
to a non-CPU-intensive project without a job, ask for one.

svn path=/trunk/boinc/; revision=17024
2009-01-27 00:16:31 +00:00
David Anderson 0b7aaa0303 client: improve backoff message
svn path=/trunk/boinc/; revision=17021
2009-01-26 18:01:30 +00:00
David Anderson 574d1fe087 - client: don't request work for a resource if it has no shortfall.
- client and server: get rid of coproc_cuda global.

svn path=/trunk/boinc/; revision=17019
2009-01-26 05:00:49 +00:00
David Anderson be177ee7a4 - client: clear debts when reset project
- client: respect work-fetch backoff for non-CPU-intensive projects
	- client: for non-CPU-intensive project, fetch new job
		if no currently running jobs
	- client: skip non-CPU-intensive projects in debt calculations
	- manager: show resource backoff times correctly

svn path=/trunk/boinc/; revision=16998
2009-01-23 18:29:28 +00:00
David Anderson 7cbce5f2ec - client: compile fix
svn path=/trunk/boinc/; revision=16970
2009-01-21 20:51:33 +00:00
David Anderson 28bc319055 - client: fetch work from non-CPU-intensive projects
svn path=/trunk/boinc/; revision=16969
2009-01-21 20:28:00 +00:00
David Anderson f33631cbbc - client: fix messages
svn path=/trunk/boinc/; revision=16960
2009-01-20 18:06:49 +00:00
David Anderson d3aa55c9b4 - client: remove limits on LTD.
svn path=/trunk/boinc/; revision=16942
2009-01-16 18:37:13 +00:00
David Anderson f90dddc9a6 - client: clamp long term debts tp +- 1 week
- client: fix CUDA debt calculation
- client: don't accumulate debt if project->dont_request_more_work
- client: improves messages

svn path=/trunk/boinc/; revision=16909
2009-01-14 23:56:07 +00:00
David Anderson 2170b45d41 - client: work_req_seconds is CPU req, not max(CPU req, CUDA req).
In order to work with the 6.7 client,
	projects with both CUDA and CPU jobs must use the newest scheduler code.

svn path=/trunk/boinc/; revision=16868
2009-01-11 05:14:47 +00:00
David Anderson 132cc6bba3 - client: debugging CUDA-related stuff
- client: if reset a project, clear its overall and per-resource backoffs

svn path=/trunk/boinc/; revision=16862
2009-01-10 00:48:22 +00:00
Charlie Fenton 3fe77eb02a client: fix compiler warnings
svn path=/trunk/boinc/; revision=16840
2009-01-08 09:53:32 +00:00
David Anderson 0899975be5 - get_project_config: don't send error text if no terms_of_use.txt
- client: compute and store project work-fetch attributes

svn path=/trunk/boinc/; revision=16837
2009-01-08 00:41:15 +00:00
David Anderson 2860574fa5 compile fixes and debug message fixes
svn path=/trunk/boinc/; revision=16836
2009-01-08 00:20:04 +00:00
David Anderson 8740ffdc94 - client: more work-fetch stuff.
No more per-project shortfall.
    It's getting pretty close.

svn path=/trunk/boinc/; revision=16765
2009-01-03 06:01:17 +00:00
David Anderson 72937e5c4f win compile fixes
svn path=/trunk/boinc/; revision=16756
2008-12-31 23:30:38 +00:00
David Anderson 8c591e31df - client: first whack at new work-fetch logic. Very preliminary.
svn path=/trunk/boinc/; revision=16754
2008-12-31 23:07:59 +00:00
David Anderson 2dc7056ee0 - client: code shuffling
- scheduler: fix typo in msg

svn path=/trunk/boinc/; revision=16750
2008-12-30 19:01:25 +00:00
David Anderson b24d947aaa - client: work fetch: skip project if zero CPU shortfall
and currently have coproc jobs.

svn path=/trunk/boinc/; revision=16746
2008-12-27 03:43:13 +00:00
David Anderson ea0146d154 - client: fix calculation of CPU shortfall;
don't fetch work from projects with zero CPU shortfall

svn path=/trunk/boinc/; revision=16613
2008-12-03 23:30:54 +00:00
David Anderson 79fb6e969e - Remove the notion of "CPU efficiency" from both client and server.
This wasn't being measured correctly for coproc/multithread apps,
    and its effect is now subsumed in DCF.

svn path=/trunk/boinc/; revision=16610
2008-12-03 19:50:06 +00:00
David Anderson 89548f04da - client: compute duration_correction_factor based on elapsed time, not CPU time
(otherwise it doesn't work for coproc or multi-proc apps)
    - client: in estimate of job completion time,
        weight the estimate based on fraction done more heavily
        (quadratic rather than linear)

svn path=/trunk/boinc/; revision=16603
2008-12-02 22:19:39 +00:00
David Anderson 122f61996a - client: estimate time to completion based on elapsed time, not CPU time
(improves estimates for coproc apps)

svn path=/trunk/boinc/; revision=16600
2008-12-02 17:48:29 +00:00
David Anderson 78199c2f5e compile fixes
svn path=/trunk/boinc/; revision=16599
2008-12-02 16:48:25 +00:00
David Anderson 84f1193a9d - client: use FLOPs, rather than CPU time,
as the basis for estimating job completion times.
    This should improve estimates for GPU apps,
    and prevent the DCF from getting messed up.

svn path=/trunk/boinc/; revision=16598
2008-12-02 03:58:32 +00:00
David Anderson eae866f743 - client: for CPU throttling, don't suspend apps that
are non-CPU-intensive or that use < 1 CPU (e.g., CUDA)
	- client: get rid of spurious "internal error,
		expected process to be executing" msg
	- diag: don't check heap on every alloc
	- fix a few compile warnings

svn path=/trunk/boinc/; revision=16323
2008-10-27 20:17:22 +00:00
David Anderson e24e551bd8 - client: clarify and fix the semantics of "next RPC time".
Here's are the new semantics: a scheduler reply can include
        <next_rpc_delay>
            Make another RPC ASAP after this amount of time elapses.
            This is specified by the <next_rpc_delay> element in config.xml.
        <request_delay>
            Don't make another RPC until this amount of time elapses.
            This is sent automatically (and sometimes with large delays)
            by various parts of the scheduler.
        next_rpc_delay now "overrides" request_delay in the sense that
        request_delay is ignored if it's greater than next_rpc_delay.

        In addition: the client maintains a min_rpc_time which is set based
        on request_delay and also by various exponential backoff schemes.
        new_rpc_delay now overrides this as well, in the same sense.

svn path=/trunk/boinc/; revision=16206
2008-10-14 21:16:04 +00:00
David Anderson 98cfb8d3b0 - rename .C files to .cpp so that Doxygen will work
svn path=/trunk/boinc/; revision=16069
2008-09-26 18:20:24 +00:00