Commit Graph

71 Commits

Author SHA1 Message Date
David Anderson 8c71f6d59a - scheduler: add support for Intel GPUs, and restructure things
to make it easier to add other GPU types in the future


svn path=/trunk/boinc/; revision=25792
2012-06-25 23:09:45 +00:00
David Anderson fd0983b991 - web: server status page should show elapsed time, not CPU time
svn path=/trunk/boinc/; revision=25785
2012-06-22 07:35:54 +00:00
David Anderson e9362c80ff - scheduler: send <dont_use_dcf> only if client is 7.0.28 or later.
svn path=/trunk/boinc/; revision=25759
2012-06-14 17:14:52 +00:00
David Anderson 3a2328b10d - scheduler: remove <dont_use_dcf/> from scheduler reply for now;
the 7.0.25 client has a bug that causes jobs
    to run EDF if this flag is present.


svn path=/trunk/boinc/; revision=25755
2012-06-13 17:40:39 +00:00
David Anderson f08ca99ff3 - scheduler: add max_results_accepted config option.
Limits mem usage by the scheduler, can prevent crashes.


svn path=/trunk/boinc/; revision=25748
2012-06-07 18:34:53 +00:00
David Anderson b0fd55bf87 - scheduler: debug plan_class_spec a little.
Add an #ifdef'd main program in plan_class_spec.cpp,
    and a makefile, for testing purposes.


svn path=/trunk/boinc/; revision=25738
2012-06-06 03:47:13 +00:00
David Anderson 8d284f2b17 - scheduler: if we truncate the # of results accepted
(like we're doing in SETI@home)
    don't resend lost results since we don't know what they are


svn path=/trunk/boinc/; revision=25733
2012-06-05 03:48:05 +00:00
David Anderson adab6254bc Update Translation
svn path=/trunk/boinc/; revision=25477
2012-03-23 16:25:19 +00:00
David Anderson 516e5ad798 - storage stuff
svn path=/trunk/boinc/; revision=25354
2012-02-29 01:11:28 +00:00
David Anderson 480e28b54c - web: fix the user search feature
- scheduler: parse d_project_share
- scheduler: if vbox and vbox_mt are both available,
    use vbox for a 1-CPU machine


svn path=/trunk/boinc/; revision=25176
2012-02-01 03:30:14 +00:00
David Anderson dd16170fc1 - scheduler: the p_fpops value reported by clients can't be trusted.
Some credit cheats (e.g. with credit_by_runtime) can be done
    by reporting a huge value.
    Fix this by capping the value at 1.1 times the 95th percentile
    of host.p_fpops, taken over active hosts.


svn path=/trunk/boinc/; revision=25017
2012-01-09 17:35:48 +00:00
David Anderson 95ebb112c2 - client: for VBox apps, check stderr for "ERR_CPU_VM_EXTENSIONS_DISABLED".
If found, set HOST_INFO::p_vm_extensions_disabled,
    and pass this to the scheduler.
- scheduler (VBox app plan function) if a host has p_vm_extensions_disabled
    set, don't sent it multicore VBox jobs.

Note: if you have a host with VM extensions, and they're disabled
    in the BIOS, and you enable them, you can remove the
    <p_vm_extensions_disabled> line from client_state.xml
    and you'll be eligible to get multicore VM jobs again.


svn path=/trunk/boinc/; revision=24944
2011-12-30 09:43:58 +00:00
David Anderson 4111c5696c - scheduler: fix crashing bug (don't memset SCHED_REQUEST).
svn path=/trunk/boinc/; revision=24660
2011-11-29 04:47:10 +00:00
David Anderson 6e1414a07f - scheduler: increase buffer for global prefs from 8K to 64K
- lay the groundwork for changing it to std::string


svn path=/trunk/boinc/; revision=24595
2011-11-15 00:11:12 +00:00
David Anderson 2ac9fe8566 - client/scheduler:
If the file "client_opaque.txt" exists on the client,
    include its contents in scheduler request messages.
    On the scheduler, parse this into SCHEDULER_REQUEST::client_opaque,
    where it can be used by the customizable scheduler functions.


svn path=/trunk/boinc/; revision=24586
2011-11-14 06:27:36 +00:00
David Anderson 8870839583 - scheduler: use new XML parser for most request elements
- scheduler: parse NVIDIA as well as CUDA in app version descriptions
    (workaround for recent clients)


svn path=/trunk/boinc/; revision=24136
2011-09-06 22:53:48 +00:00
David Anderson 7c81d72378 - web: fix warnings in forum pages
- scheduler: when using elapsed time stats to predict runtime,
    cap the estimated FLOPS at twice the peak FLOPS;
    otherwise, if a host has received a lot of very short jobs
    recently, it will get a too-high FLOPS estimate and
    will exceed the rsc_fpops_bound limit.


svn path=/trunk/boinc/; revision=24128
2011-09-05 17:29:53 +00:00
David Anderson a427bc43a6 - scheduler: make sure there's a \n after </workunit> and </result>.
Otherwise older clients won't be able to parse.


svn path=/trunk/boinc/; revision=24098
2011-08-31 18:52:57 +00:00
David Anderson fe25a92739 svn path=/trunk/boinc/; revision=24016 2011-08-19 16:19:52 +00:00
David Anderson d379f8e471 - scheduler: update XML parsing
svn path=/trunk/boinc/; revision=23994
2011-08-11 21:15:42 +00:00
David Anderson c5c5975b44 - Improve interface of XML_PARSER.
Add parsed_tag and is_tag to the class,
    so that parsing functions don't need to declare them
    and pass them around.
- Complete the task of using XML_PARSER as the argument
    to all parsing functions.
    (Internally, many of these functions still use the old XML parser;
    that's the next step.)


svn path=/trunk/boinc/; revision=23978
2011-08-10 17:11:08 +00:00
David Anderson 578d5f924f - scheduler: fix nasty bug where SCHED_DB_RESULT::parse()
was doing memset(this, 0, sizeof(RESULT)),
    i.e. it wasn't zeroing out the whole structure.
    The elapsed_time field (which isn't reported by old clients),
    is near the end of the struct,
    and it was getting garbage, e.g. 1e-304, in some cases,
    which led to zero credit (and maybe other problems)
- validator: treat 1e-304 like zero in case of other problems
    like the above.
- remote job submission: tweaks


svn path=/trunk/boinc/; revision=23947
2011-08-08 04:37:53 +00:00
David Anderson 8837274aae - scheduler: check for negative elapsed time in results
reported by client, set to zero


svn path=/trunk/boinc/; revision=23909
2011-07-31 17:31:12 +00:00
David Anderson 27e05a3da9 - server: some stuff to prepare for distributed storage
- don't create result records for uploads and downloads.
        Just create a msg_to_client record.
    - the scheduler handles file-transfer results specially;
        it makes a vector of them, then calls a project-supplied function
        handle_file_xfer_results()
    - change the interface and implementation of put_file and get_file
- client write project sched priority in GUI RPC replies,
    but not to the state file


svn path=/trunk/boinc/; revision=23857
2011-07-19 20:52:41 +00:00
David Anderson 3b73c8dc0a - db_purge: make zip compression work (from Teemu Mannermaa)
- get rid of a few compile warnings


svn path=/trunk/boinc/; revision=23789
2011-07-01 02:12:11 +00:00
David Anderson 436415cfe1 - scheduler, back end: add "homogeneous app version" feature.
Lets you specify, on a per-app basis,
    that all instances should be done using the same app version.
    This is for validation in the presence of GPUs.
- scheduler: code cleanup
    - Instead of adding a bunch of non-DB fields to RESULT,
        used a derived class SCHED_DB_RESULT.
    - Instead of storing a pointer to BEST_APP_VERSION in RESULT,
        store the structure itself.
        This simplifies the memory allocation situation.
- client: condition "Got server request to delete file" messages
    on <file_xfer_debug>


svn path=/trunk/boinc/; revision=23636
2011-06-06 03:40:42 +00:00
David Anderson 1afde126cb - client: escape only non-ASCII chars in stderr out, not control chars
svn path=/trunk/boinc/; revision=23601
2011-05-25 16:40:19 +00:00
Rom Walton 5c2367caf2 - scheduler: unescape the stderr_out field after parsing so we do not break
other applications parsing the data.
        
    sched/
        sched_types.cpp

svn path=/trunk/boinc/; revision=23600
2011-05-25 15:39:35 +00:00
David Anderson 8757e07f4f - client: change the handling of account manager replies:
Old:
        If the AM sends us a project we're already attached to,
        and the authenticator is different,
        print an error message and don't change anything.
    Problem:
        If the AM is using weak authenticators,
        and the user has changed their password,
        the weak authenticator changes.
        In this case the AM will send the new weak auth,
        the client will ignore it,
        and all subsequent scheduler RPCs will fail
        until the user removes/adds the project.
    Solution:
        If the AM sends us a new auth for a project, use it.
    Note:
        From the time the password is changed on the project
        to the next AM RPC,
        the client will have a bad weak auth and scheduler RPCs will fail.
        That's OK.

client/
    acct_mgr.cpp

svn path=/trunk/boinc/; revision=23479
2011-04-28 22:10:23 +00:00
David Anderson 35df8d8721 - scheduler: don't send translatable messages to pre-6.12 clients
svn path=/trunk/boinc/; revision=23385
2011-04-19 17:57:54 +00:00
David Anderson a7828abdda - scheduler: removed unused destructors in COPROC that
caused scheduler to crash (not sure why)


svn path=/trunk/boinc/; revision=23312
2011-04-01 21:21:11 +00:00
David Anderson 597320db39 - scheduler: compile fixes
svn path=/trunk/boinc/; revision=23281
2011-03-25 22:47:49 +00:00
David Anderson ea23152216 - client: don't send <?xml to scheduler; it doesn't expect it
- scheduler: handle optional <?xml


svn path=/trunk/boinc/; revision=23091
2011-02-23 01:03:46 +00:00
David Anderson c152968f53 - scheduler/client/API: pass user ID and team ID from scheduler to client,
and from client to app (host ID is already passed).
    E@h asked for this, not sure why.

svn path=/trunk/boinc/; revision=22902
2011-01-13 22:40:48 +00:00
David Anderson 396dc5a8b4 svn path=/trunk/boinc/; revision=22895 2011-01-12 01:17:07 +00:00
David Anderson 3355b66241 - client and scheduler: a client host may have multiple VM systems installed.
TODO: check for VirtualBox on Mac, Linux

svn path=/trunk/boinc/; revision=22704
2010-11-17 23:19:07 +00:00
Rom Walton 1564a49816 - sched: Parse the detected virtual machine software from
the scheduler request so it can be used in plan classes.
        
    db/
        boinc_db.h
    sched/
        sched_types.cpp

svn path=/trunk/boinc/; revision=22703
2010-11-17 20:52:01 +00:00
David Anderson 8905cb6545 - scheduler: bug fix to the above
svn path=/trunk/boinc/; revision=22662
2010-11-09 19:41:53 +00:00
David Anderson 3648818499 - client, scheduler, RPC protocol:
- If the scheduler doesn't have any app versions for resource type X,
        it includes an element <no_X_apps>1</no_X_apps> in the reply msg
        (e.g., <no_cpu_apps>1</no_cpu_apps>)
    - The client parses and stores these flags,
        and doesn't ask a project for work for a resource
        if the project doesn't have app versions for it.
    Apparently I started this change in [19375] (October 2009)
    and forgot to finish it.


svn path=/trunk/boinc/; revision=22661
2010-11-09 19:04:24 +00:00
David Anderson b169e5ab0f - server programs: print error message instead of numeric retval
in log messages

svn path=/trunk/boinc/; revision=22647
2010-11-08 17:51:57 +00:00
David Anderson ac435d0857 - scheduler: don't send translatable strings to pre-6.12 clients
svn path=/trunk/boinc/; revision=22603
2010-10-28 21:46:18 +00:00
David Anderson 5f5d64c978 - scheduler: check whether client is reporting the same result twice
in a given request message.
    Eliminate duplicates; they mess things up.
- scheduler: fix RESULT#0 problem in message log
- user web: keep credit totals when merging hosts by name

svn path=/trunk/boinc/; revision=22432
2010-09-30 21:40:44 +00:00
David Anderson 89ef71abbf - scheduler: fix bug that crashed if app_info.xml
refers to nonexistent app

svn path=/trunk/boinc/; revision=22090
2010-08-02 03:43:38 +00:00
David Anderson 6b8a569d6d - client/scheduler: fix a group of bugs related to the new mechanism
where the client tells the scheduler which app versions
    its queued jobs use
    (this is needed, e.g., to enforce per-app or per-resource job limits).
    In this mechanism, the client sends an array of <app_version>s,
    and each <other_result> includes an index into this array.

    - The wrong index was being sent (client).
    - If an <app_version> had a non-existent app name
        (e.g. because that app had been deprecated)
        it wasn't getting put in the array, invalidating array indices
        Furthermore, an erroneous message was being sent to the user

        Fix: if parse error for <app_version>,
        put it in the array anyway, but with cav.app = NULL,
        meaning that it's a place-holder.
        Send a message to user only if anon platform.

- manager: increase notice buffers to 64K

svn path=/trunk/boinc/; revision=22052
2010-07-23 17:43:20 +00:00
David Anderson fba290f19a - manager: in simple view, where it says Elapsed time,
show elapsed rather than CPU time


svn path=/trunk/boinc/; revision=22018
2010-07-21 16:19:37 +00:00
David Anderson faab0991f7 - scheduler: fix and restore fpops scaling for anonymous platform jobs
svn path=/trunk/boinc/; revision=21962
2010-07-15 21:38:24 +00:00
David Anderson 55e0e86c90 - scheduler: make messages translatable
svn path=/trunk/boinc/; revision=21896
2010-07-13 02:49:35 +00:00
David Anderson 0f613d61d8 - scheduler and client: fix the "allow multiple clients" feature.
This feature lets you run the BOINC client as a job on grid systems
    that handle only 1-CPU jobs;
    it disables various mechanisms that prevent multiple clients per host
    (which is normally a bad thing).
    Old:
        - Run the client with a --allow_multiple_clients flag.
            This tells it not to use a mutex that prevents
            multiple clients per host.
        - Run the project with the <multiple_clients_per_host> config flag.
            This suppresses two mechanisms:
            - (avoid duplicate host records)
                on a scheduler request with no host ID,
                looks for a host with same domain name, OS type,
                and mem size, and assumes the request is from that host
            - (job retry)
                If we get a request that doesn't have a host ID
                but does have a host CPID,
                mark its in-progress results as over
                NOTE: I CAN'T REMEMBER WHY WE SUPPRESS THIS;
                MARK S, DO YOU REMEMBER?

    Problem:
        if the grid clients attach to a project that
        doesn't use <multiple_clients_per_host>, bad things happen.
        E.g., if there are several requests at about the same time,
        most of them will fail with
        "another RPC already in progress" errors.
        If a project does include this flag,
        it loses protection from duplicate host records.

    New:
        - If the client is run with --allow_multiple_clients flag,
            it passes a <allow_multiple_clients> element
            in scheduler requests.
        - The scheduler skips the duplicate-host check on
            requests that include this flag.
        - There is no more <multiple_clients_per_host> scheduler option.

    Note: if a project using the old mechanism upgrades to this change,
    it will need to use new clients for its grid deployment.


svn path=/trunk/boinc/; revision=21839
2010-06-29 16:37:28 +00:00
David Anderson 114f4f15cf - scheduler and client: use "notice" rather than "high" priority
for messages intended as notices.
    This will avoid showing lots of obscure stuff as notices
    for projects with old server code.

svn path=/trunk/boinc/; revision=21836
2010-06-29 03:23:13 +00:00
David Anderson d756994bda - scheduler and back end: message tweaks and fixes
svn path=/trunk/boinc/; revision=21835
2010-06-29 03:20:19 +00:00