Commit Graph

355 Commits

Author SHA1 Message Date
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 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 cd4ca5fb17 - client: fix calculation of a job's FLOPS rate in round-robin simulation
svn path=/trunk/boinc/; revision=16662
2008-12-09 20:01:01 +00:00
David Anderson 0ded726fe7 - client: fix a long-standing error: if prefs say leave X GB free,
and BOINC is using Y GB, and there are Z GB free,
        the limit on BOINC is Y + Z - X (not Z - X).

svn path=/trunk/boinc/; revision=16388
2008-11-02 20:09:59 +00:00
David Anderson 51c993542e - client: cleaned up CPU scheduler logic somewhat
svn path=/trunk/boinc/; revision=16356
2008-10-29 22:13:04 +00:00
David Anderson 48ba503db3 - code shuffle
svn path=/trunk/boinc/; revision=16340
2008-10-28 22:38:00 +00:00
David Anderson 2d1d47de15 - client: move round-robin simulation to its own file
- web: check for profile existence before trying to show it
- file deleter: add some debugging msgs

svn path=/trunk/boinc/; revision=16338
2008-10-28 21:59:25 +00:00
David Anderson e43e8a408d - client: major changes to enforce_schedule() to handle GPUs
svn path=/trunk/boinc/; revision=16178
2008-10-09 22:44:45 +00:00
David Anderson f17c0879de - changed some comments for Doxygen
svn path=/trunk/boinc/; revision=16130
2008-10-04 23:44:24 +00:00
David Anderson 4f66bb4c95 - added copyright and license info to .C, .cpp, .h files
- scheduler: fix bug in adaptive replication:
    if send an unreplicated job to untrusted host,
    set both wu.target_nresults and wu.min_quorum to app.target_nresults.

svn path=/trunk/boinc/; revision=15762
2008-08-06 18:36:30 +00:00
David Anderson 884bad0975 - client: show proxy info in messages at startup and when changed
fixes #704
- web: fix the am_set_info.php RPC
    (most args are optional, not mandatory)

svn path=/trunk/boinc/; revision=15716
2008-07-30 21:37:41 +00:00
David Anderson eeeb3b7951 - client: on startup, detect when the system clock has been set backwards,
and clear all timeout variables.
    This should fix the situation where, say:
    1) the user sets the system clock forward by a year;
    2) all projects get their min_rpc_time set;
    3) the user sets the system clock back to the correct time.
    Previously, BOINC would not do anything for a year.

    Note: a restart of BOINC is required to fix things.
    It would be harder to do this on the fly.

svn path=/trunk/boinc/; revision=15314
2008-05-28 19:15:44 +00:00
David Anderson c01e75ec4c - client: shuffle code to abstract coprocessor reservation
svn path=/trunk/boinc/; revision=15287
2008-05-23 21:24:36 +00:00
David Anderson 8294fba98f - client: print a message at startup if computation is suspended
svn path=/trunk/boinc/; revision=15279
2008-05-22 20:57:12 +00:00
David Anderson 9fa202d8f0 - client: add coprocessor support: i.e., parse the list of coprocs
in <app_version>s from the server,
    keep track of the number free of each type of coproc,
    and don't run an app that needs more than are available.
    (not quite working yet)

svn path=/trunk/boinc/; revision=14992
2008-04-01 15:08:47 +00:00
David Anderson 13400c9516 Changes for multithread app support:
- update_versions: use __ (not :) as separator for plan class
- client: add plan_class to APP_VERSION;
    an app version is now identified by platform/version/plan_class
- client CPU scheduler: don't assume apps use 1 CPU
- client: add avg_ncpus, max_cpus, flops, cmdline to RESULT
- scheduler: implement app planning scheme

Other changes:

- client: if symlink() fails, make a XML soft link instead
    (for Unix running off a FAT32 FS)
- client: don't accept nonpositive resource share from AMS
- daemons and DB: check for error returns from enumerations,
    and exit if so.  Thus, if the MySQL server goes down,
    all the daemons will soon exit.
    The cron script will restart them every 5 min,
    so when the DB server comes back up so will the project.
- web: show empty max CPU % as ---
- API: get rid of all_threads_cpu_time option (always the case now)


svn path=/trunk/boinc/; revision=14966
2008-03-27 18:25:29 +00:00
David Anderson c685f66384 - client: preliminary support for detecting and reporting coprocessors
(for now, CUDA devices)

svn path=/trunk/boinc/; revision=14876
2008-03-10 20:40:35 +00:00
David Anderson 35dab13859 - client code: my next-to-last checkin was flawed
svn path=/trunk/boinc/; revision=14725
2008-02-12 20:33:05 +00:00
David Anderson ee34cf3ab7 - client: removed sprawl
svn path=/trunk/boinc/; revision=14721
2008-02-12 15:04:27 +00:00
David Anderson 9b2998009f - client: add --start_delay cmdline option and <start_delay> config option.
Specifies an amount of time to delay starting apps
    (e.g. so that BOINC doesn't slow down boot process)

    Note: mechanisms that start BOINC at boot time
    need to figure out how to set this flag.

svn path=/trunk/boinc/; revision=14445
2007-12-27 21:40:20 +00:00
David Anderson f7c8bc5280 - client: fix bug that would falsely report DLL init errors
- client: don't crash when detach a project using anonymous platform
        (fixes #511)

svn path=/trunk/boinc/; revision=14348
2007-12-03 17:46:07 +00:00
David Anderson b3768ecc6f - client: removed -return_results_immediately cmdline option
(wasn't implemented anyway)
- client: added <report_results_immediately> configuration flag;
    causes results to be reported as soon as done.
    Needed for some WCG machines that are reformatted often.
    Should NOT be used in general, since it increases server load.

svn path=/trunk/boinc/; revision=14280
2007-11-21 19:57:40 +00:00
David Anderson cd9538589a - client: when starting an app, and an input/app file is not available,
show the file name and error code in the message
    that's appended to the job's stderr_out.

svn path=/trunk/boinc/; revision=14114
2007-11-07 19:32:32 +00:00
Frank Thomas 3bfc78b511 Updated the postal address of the Free Software Foundation in all license headers. See http://lists.ssl.berkeley.edu/pipermail/boinc_dev/2007-October/008939.html for reference.
svn path=/trunk/boinc/; revision=13804
2007-10-09 11:35:47 +00:00
David Anderson d302a5e107 - client/manager/API: code cleanup to disentangle sandbox code from lib/.
- move client sandbox-specific code to a new file, sandbox.C
    - remove g_use_sandbox from util.C; move to MainDocument.cpp (manager)
        and sandbox.C (client)
    - don't declare check_security() in util.h; it's not in util.C
    - don't call remove_project_owned_file_or_dir() in
        boinc_delete_file_aux() or boinc_rmdir();
        rather, at the points in the client that delete
        dirs that are usually owned by boinc_projects,
        call remove_project_owned_file_or_dir() first,
        then clean_out_dir().
    - rename boinc_exec() to switcher_exec() and move it to sandbox.C

Note: this change was sparked by needing to remove a call to getgrnam()
from boinclib, to avoid requiring the same version of glibc
on both compile and target hosts

svn path=/trunk/boinc/; revision=13784
2007-10-05 16:47:07 +00:00
David Anderson cbe14c89fa - finished up the above
svn path=/trunk/boinc/; revision=13693
2007-09-27 21:28:32 +00:00
David Anderson aadcc979cd - client: first pass at fixing a fundamental design flaw:
there's a single GUI_HTTP object,
    and it works only if used sequentially,
    i.e. an op is started only after the previous one ends.
    This breaks if a GUI RPC triggerse and op while
    a project-list fetch (initiated by the client itself) is in progress.
    Or if two managers are connected at the same time,
    and both do HTTP ops.
    The solution: have a separate GUI_HTTP object for each GUI_RPC_CONN,
    and an additional one for use by the client itself.

svn path=/trunk/boinc/; revision=13692
2007-09-27 21:03:15 +00:00
David Anderson f1f5930579 - client: removed everything related to screensaver
(deciding which app to use, implementing blanking interval, etc.)
    This logic is all now in the screensaver itself.
- GUI RPC: removed get/set screensaver mode RPCs
- API: added a "backwards_compatible_graphics" flag to BOINC_OPTIONS.
    V6 apps should set this.
    If set, the runtime library checks for graphics messages
    from the client, and launches/kills the graphics app (if any).
    The app will then work graphically with pre-V6 clients.
- removed some old files

svn path=/trunk/boinc/; revision=13651
2007-09-25 16:04:45 +00:00
David Anderson eaed993f4c - User web and client: added a new pref "suspend_if_no_recent_input"
that lets you suspend computation after a specified period of idleness.
        This is necessary to allow some machines to go into low-power mode
        when they're not being used.
    - Change the wording of some existing prefs; for example, changed
        "Do work while computer is in use?" to
        "Suspend work while computer is in use".
        The former is confusing - if you say yes, BOINC may in fact
        NOT do work while the computer is in use,
        due to other factors (time of day, etc.)
    TODO: HOST_INFO::users_idle() should be changed so that it
        returns the idle time
        (rather than telling you whether we've been idle for X)

svn path=/trunk/boinc/; revision=13193
2007-07-19 23:22:19 +00:00
David Anderson 79adf59f98 - client: if can't write state file, don't immediately exit,
but don't do anything other than handle GUI RPCs.
    After 50 secs, print an "about to exit" message.
    After 60 seconds, exit

svn path=/trunk/boinc/; revision=13162
2007-07-16 20:30:21 +00:00
David Anderson b9d7ecdc1a - client: run_if_user_active pref applies to both
network transfers and CPU usage.
    (Note: maybe we should have a separate pref for this).

svn path=/trunk/boinc/; revision=13131
2007-07-10 17:49:51 +00:00
David Anderson cdc65cd283 - Manager: if a job is running EDF, show "high priority" in status
- compile fixes for Charlie's next-to-last checkin
    
    client/
        client_state.h
        cpu_sched.C
        sim.h
        sim_util.C
    clientgui/
        ViewWork.cpp
        ViewWorkGrid.cpp

svn path=/trunk/boinc/; revision=13021
2007-06-25 19:05:29 +00:00
Charlie Fenton 7bb1b1a0d4 CC: Add logic to scheduler, etc. for systems which limit the number of shared memory segments per process and / or system-wide.
svn path=/trunk/boinc/; revision=13015
2007-06-25 11:46:15 +00:00
David Anderson 1e7e58875a - client: add cmdline options --exit_before_start and --exit_after_finish.
This cause the core client to exit immediately before or after
    running a job,
    letting you examine the contents of the slot directory.
- scheduler: changed max # of CPUs used in daily_result_quota
    limit from 4 to 8, and make it a compile-time parameter
- feeder/scheduler: make the number of work items in shared
    memory configurable (in config.xml).
    The element is <shmem_work_items>
- feeder: make the size of the work item query configurable
    (<feeder_query_size)
- feeder: remove code related to removing infeasible results
    from shared mem.
    This mechanism was never needed,
    and I think a timeout would accomplish the same effect.

client/
    app.C
    app_start.C
    client_state.C,h
    cs_cmdline.C
sched/
    feeder.C
    sched_array.C
    sched_config.C,h
    sched_send.C
    sched_shmem.C,h
    sched_util.C
    show_shmem.C

svn path=/trunk/boinc/; revision=12771
2007-05-29 21:45:01 +00:00
David Anderson 5bbcc6b3b6 - client: fix bug where:
1) client wakes up from hibernate
    2) one or more network ops start (e.g. because backoff expired)
    3) ops fail because DNS system isn't up yet
    4) connect to reference site fails too
    5) user sees "please create physical connection",
        even though there's been a physical connection the whole time.
    Solution:
    - keep track of "last wakeup time": the last time the
        time of day (measured in poll_slow_events())            increased by more than 10 times the polling interval.
        This must be either coming out of hibernation,
        or the user resetting the system clock.
    - When a network operation fails, try to contact the reference site
        only if it's more than 30 seconds after the last wakeup time.

client/
    client_state.C,h
    net_stats.C

svn path=/trunk/boinc/; revision=12665
2007-05-14 21:45:02 +00:00
David Anderson bd8b0aed41 - core client: on attach to project,
if the initial sched request failed,
		the manager would show "communicating" for 60 sec,
		then time out and show "failed to attach".
		But the project would actually be attached.
		This was due to a logic error,
		but I fixed it in a more fundamental way:
		by considering an attach to be complete immediately,
		without waiting for a successful scheduler RPC.

		This was originally done to ensure that the URL and account key were valid.
		But when using the BOINC Manager, we've already verified
		both of these before doing the attach project RPC.

		When using boinc_cmd, you now have to check for messages
		indicating a bad URL or account key.
		I changed things to print these messages on every sched RPC.

		Implementation: the notion of "tentative project" no longer exists.

	client/
		client_state.C,h
		client_types.C,h
		cs_account.C
		cs_benchmarks.C
		cs_scheduler.C
		gui_rpc_server_ops.C
		scheduler_op.C
		sim.C
		sim_util.C

svn path=/trunk/boinc/; revision=12663
2007-05-14 19:18:45 +00:00
David Anderson 2853649d28 - core client: add <no_alt_platform> config option;
eliminates use of alternate platforms.

    client/
        client_state.h
        cs_platforms.C
        cs_statefile.C
        log_flags.C,h

svn path=/trunk/boinc/; revision=12600
2007-05-07 19:38:27 +00:00
David Anderson a6521f58e7 - core client: when parsing statefile or scheduler reply,
if get an app_version with unknown platform name, ignore it.
		This means that, e.g. if someone moves a BOINC directory
		from Intel to PowerPC Mac, things will still work right.

	client/
		client_state.C,h
		cs_platforms.C
		cs_scheduler.C
		cs_statefile.C

svn path=/trunk/boinc/; revision=12579
2007-05-06 20:22:39 +00:00
David Anderson 4a1741e220 - Core client: handle multiple platforms correctly.
Remove the tacet assumption that a host can handle
        applications for a single platform.
        With the Apr 30 scheduler changes,
        a project may (at different times)
        send app versions for the same app and version number,
        but different platforms.
        Before we would have ignored all but the first;
        now we handle them correctly.

        Implementation notes:
        - Add APP_VERSION.platform, RESULT.platform,
            and RESULT.version_num.
            If these are missing from an XML doc
            (e.g. an existing state file or a scheduler reply
            from a project not running current server)
            then set to the primary platform.
        - Continue to write workunit.version_num
            and active_task.version_num to state file,
            even though these are no longer part of the struct.
            This allows users to revert to an older version.

    client/
        app.C
        check_state.C
        client_state.C,h
        client_types.C,h
        cs_apps.C
        cs_scheduler.C
        cs_statefile.C
        sim.C

svn path=/trunk/boinc/; revision=12542
2007-05-03 17:14:30 +00:00
Rom Walton a100628ee8 - fixes #154:
* refactored the alternate platform mechinism so that we
          can support multiple alternate platforms.
        * moved everything to cs_platforms.C since we expect the
          kind of sprawl that is in host_info.C on the *nix
          environments.
    - Clean up some warnings
          
    client/
        acct_setup.C
        client_state.C, .h
        client_types.h
        cs_platforms.C (Added)
        cs_scheduler.C
        cs_statefile.C
        http_curl.C
    lib/
        str_util.h

svn path=/trunk/boinc/; revision=12531
2007-05-02 17:53:35 +00:00
Eric J. Korpela 8a8ffc8ef9 Eric K 24 Apr 07
-  Exteded the "altername_platform" mechanism to x86_64 linux
       and solaris.  The current alternate platforms found by configure
       are...
	 x86_64-pc-linux-gnu    -> i686-pc-linux-gnu
	 sparc64-sun-solaris    -> sparc-sun-solaris
	 sparc-sun-solaris      -> sparc-sun-solaris2.7
	 powerpc64-apple-darwin -> powerpc-apple-darwin
    -  The alternate platform can be overridden on the configure command line
         --with-boinc-alt-platform="platformname"

    m4/
        boinc_platform.m4
    sched/
        Makefile.am
    client/
        client_state.C
        cs_scheduler.C
        client_state.h


svn path=/trunk/boinc/; revision=12467
2007-04-25 02:02:24 +00:00
Rom Walton 3307404373 Fix build break introduced when windows_x86_64 support was added.
svn path=/trunk/boinc/; revision=12456
2007-04-23 22:25:19 +00:00
Rom Walton ac6974b62b Rom 19 Apr 2007
- Fix a minor compile problem on 64-bit Windows platforms with the
        call to SetTimer.
    - fixes #80: Introduce the notion of an alternate platform for 64-bit
        Windows clients, which can also run 32-bit Windows apps.
        
      TODO: We'll need to refactor the whole platform section in the
        scheduler request creation section so that it can handle
        multiple alternate platforms and for Linux/Mac.
        
    api/
        windows_opengl.C
    client/
        client_state.C, .h
        cpp.h
        cs_scheduler.C

svn path=/trunk/boinc/; revision=12421
2007-04-19 20:53:16 +00:00
David Anderson 3f915e647f svn path=/trunk/boinc/; revision=12407 2007-04-17 22:24:53 +00:00
David Anderson 3eaea4fb71 *** empty log message ***
svn path=/trunk/boinc/; revision=12347
2007-04-11 21:49:57 +00:00
David Anderson 11869bc0be *** empty log message ***
svn path=/trunk/boinc/; revision=12333
2007-04-09 02:17:26 +00:00
David Anderson 275427c9a2 *** empty log message ***
svn path=/trunk/boinc/; revision=12304
2007-04-03 20:30:44 +00:00
David Anderson 8ee50511de *** empty log message ***
svn path=/trunk/boinc/; revision=12277
2007-03-28 21:30:45 +00:00
David Anderson b5dbce7b3f *** empty log message ***
svn path=/trunk/boinc/; revision=12273
2007-03-27 18:36:22 +00:00
David Anderson 035642f298 *** empty log message ***
svn path=/trunk/boinc/; revision=12244
2007-03-19 19:13:40 +00:00