Commit Graph

58 Commits

Author SHA1 Message Date
David Anderson 795e89dbf5 - client: eliminate unnecessary CPU reschedules.
Currently we do a reschedule any time a job checkpoints,
    in case there's a job that has finished a time slice
    but hasn't checkpointed yet.
    Instead: flag such jobs, and trigger a reschedule
    on checkpoint only for flagged jobs.
- client: fix instability in job scheduling that happens
    if a job's estimated completion time in RR sim is close to its deadline.
    It can alternate between making and missing deadline,
    causing the scheduler to alternate rapidly between jobs.
    Solution: if RR sim has marked a job as deadline miss
    any time in the last (CPU scheduling period),
    treat it as a deadline miss.


svn path=/trunk/boinc/; revision=22928
2011-01-19 16:46:55 +00:00
David Anderson 6784283211 - user web: fix bugs in server status page
- fix some indentation


svn path=/trunk/boinc/; revision=22890
2011-01-06 23:09:13 +00:00
David Anderson 40c50852f5 - scheduler: fix logic that deals with jobs that need > 2GB RAM.
My change of 1 Oct ([22440]) required that such jobs
    be processed with 64-bit apps,
    on the assumption that 32-bit apps have a 2 GB user address space limit.
    However, it turns out this limit applies only to Windows
    (kernel and user mode share the 4GB address space; each gets half).
    On Linux, the split is 3GB user / 1 GB kernel.
    On Mac OS X, user mode and kernel mode have separate address spaces,
    each of them 4 GB.


svn path=/trunk/boinc/; revision=22599
2010-10-27 22:58:16 +00:00
David Anderson 3de15a592d - client simulator: various fixes
svn path=/trunk/boinc/; revision=22555
2010-10-19 15:48:33 +00:00
David Anderson 29c3220c75 - client: in computing non-BOINC CPU time,
ignore ACTIVE_TASKs that don't have a process.
	- client: bug fix to previous checkin

svn path=/trunk/boinc/; revision=22423
2010-09-29 18:15:24 +00:00
David Anderson c6270ed0b7 - client: if a process has priority <= that of BOINC apps,
don't include it in non-BOINC CPU time.
    Otherwise the presence of such a process could
    prevent BOINC from running apps.
    (Windows only - will do Unix/Mac later)

svn path=/trunk/boinc/; revision=22422
2010-09-29 16:45:47 +00:00
David Anderson 31db3207e4 - client: fix bug that cause wasted scheduler RPC
Old: when a job finished, we cleared the backoffs for the
        resources it used.  The idea was to get more jobs
        immediately in the case where the client was at
        a jobs-in-progress limit.
    Problem: this resulted in an RPC immediately,
        typically before the output files were uploaded.
        So the client is still at the limit, and doesn't get jobs.
    New: clear the backoffs at the point when output files
        have been uploaded and the job is ready to report.
- client: change range in resource backoff from (0,x) to (.5, 1.5*x)


svn path=/trunk/boinc/; revision=22411
2010-09-24 21:24:02 +00:00
David Anderson 082603f927 compile fix
svn path=/trunk/boinc/; revision=22410
2010-09-24 20:37:45 +00:00
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 ec2577771f - client: when computing non-BOINC CPU usage,
allow for the possibility that suspended BOINC apps
    aren't really suspended
    (e.g. multithread apps that don't use boinc_init_parallel())
- client: message tweak

svn path=/trunk/boinc/; revision=22388
2010-09-18 04:04:08 +00:00
Charlie Fenton 9d55213996 client: fix problems with exclusive_gpu_app feature
svn path=/trunk/boinc/; revision=22310
2010-08-31 10:35:42 +00:00
David Anderson f9adad65b6 - client: ignore case in names of "exclusive apps"
and exclusive GPU apps
	- client: fix bug that caused GPU apps to not be
		suspended or resumed immediately after
		exclusive GPU app transition
	- client: in log message, instead of saying
		"fetching tasks for GPU", say which kind of GPU

svn path=/trunk/boinc/; revision=22298
2010-08-27 18:22:59 +00:00
David Anderson eb35fc63e1 - client: code cleanup (move some config vars from CLIENT_STATE to CONFIG)
svn path=/trunk/boinc/; revision=21682
2010-06-02 18:21:30 +00:00
David Anderson 07b2830d93 - client: fix bug in accounting of elapsed time and CPU time
svn path=/trunk/boinc/; revision=21635
2010-05-25 18:48:53 +00:00
David Anderson 515abee470 - client/manager: keep track of "GPU suspended reason".
Report it to the manager
    (it was already in CC_STATUS, but not populated)
- manager: fix system tray icon popup text

svn path=/trunk/boinc/; revision=21481
2010-05-12 18:14:30 +00:00
David Anderson b8df52bc8a - client: temporarily enable logic that deallocates memory on exit,
so that we can look for memory leaks.
- client: enable bandwidth quota limit only if both
    #MB and #days are nonzero.
- scheduler: when resending work, don't send more than
    client is requesting
- scheduler: restore Cobblestone factor to 100

svn path=/trunk/boinc/; revision=21460
2010-05-11 19:50:14 +00:00
Rom Walton 9cb3e6ffc7 - client & lib: bring header inclusion up-to-date for the CC to begin
hunting down a memory leak.
        
    client/
        <Various Files>
    lib/
        <Various Files>

svn path=/trunk/boinc/; revision=21457
2010-05-11 19:10:29 +00:00
David Anderson 7db608660f - client: standardize debug messages.
Messages enabled by <foo_debug> are prefixed by "[foo]"


svn path=/trunk/boinc/; revision=21335
2010-04-29 20:32:51 +00:00
David Anderson cc8ea9de3c - client: Win: kill runaway apps using TerminateProcess()
rather than TerminateProcessById().
    The latter doesn't work in protected mode.
- client: pid_handle => process_handle.  misnomer

svn path=/trunk/boinc/; revision=21272
2010-04-23 22:31:08 +00:00
David Anderson 84861e7c55 - client: don't include graphics apps in non-BOINC CPU time
svn path=/trunk/boinc/; revision=21131
2010-04-07 05:54:20 +00:00
Rom Walton e14e1cad34 - Remove BOINC_RCSID tags from source files, we are doing branching and tagging
properly.
        
    <Various Files>

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

svn path=/trunk/boinc/; revision=20805
2010-03-05 21:13:53 +00:00
David Anderson 45b9c4518c - client: fix bug in "suspend if CPU load too high" feature.
Forgot to convert between fraction and percentage

svn path=/trunk/boinc/; revision=20651
2010-02-18 23:53:14 +00:00
David Anderson 7d4d65e42c - client: remove debug msgs
svn path=/trunk/boinc/; revision=20285
2010-01-28 04:43:31 +00:00
David Anderson 20d6b06f5f - client: initial checkin for "don't compute if CPU usage above X"
svn path=/trunk/boinc/; revision=20192
2010-01-19 00:03:38 +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 5822c19de5 - make startup msgs normal priority; fix crash
svn path=/trunk/boinc/; revision=20031
2009-12-23 23:25:45 +00:00
David Anderson 735e2b0448 - internal change: rename MSG_USER_ERROR to MSG_USER_ALERT
svn path=/trunk/boinc/; revision=20027
2009-12-23 18:02:40 +00:00
David Anderson 711430b081 - more notice stuff
svn path=/trunk/boinc/; revision=20011
2009-12-22 17:11:59 +00:00
David Anderson 089a496409 - manager/client: show PID in task properties;
add PID to RESULT structure in GUI RPC

svn path=/trunk/boinc/; revision=20001
2009-12-21 17:25:43 +00:00
Rom Walton 2d25b6698d - Cleanup various warnings
- WINSCR: Implement new configuration dialog with new parameters
    - WINSCR: Remove crufty code
    - WINSCR: Update copyrights in resource files
    
    client/
        app.cpp
    clientscr/
        boinc_ss.h
        boinc_ss.rc
        boinc_ss_opengl.h
        boinc_ss_opengl.rc
    clientscr/
        screensaver.cpp, .h
        screensaver_win.cpp, .h
    lib/
        common_defs.h
        crypt.cpp
        idlemon_win.cpp
        win_util.cpp
    samples/worker/
        worker.cpp
    win_build/
        boinc_ss.vcproj
        multi_thread.vcproj
        sleeper.vcproj
        ss_app.vcproj
        uc2_graphics.vcproj

svn path=/trunk/boinc/; revision=19923
2009-12-16 19:55:09 +00:00
David Anderson 8182ccd031 - client/manager: first whack at a "snooze GPU" button
svn path=/trunk/boinc/; revision=19853
2009-12-10 23:26:35 +00:00
David Anderson 0fe8faf056 svn path=/trunk/boinc/; revision=19764 2009-12-02 04:48:17 +00:00
David Anderson 98d9cfae6f - client: fix exclusive_gpu_app feature so that it responds
within 10 sec instead of 60 sec

svn path=/trunk/boinc/; revision=19577
2009-11-13 21:57:25 +00:00
David Anderson e057c552d8 - client: add <exclusive_gpu_app> option:
suspend GPU usage when particular apps are running

svn path=/trunk/boinc/; revision=19573
2009-11-13 17:49:18 +00:00
David Anderson c06c07cf14 - client: if GPU is removed while jobs in progress,
don't show messages as internal errors.


svn path=/trunk/boinc/; revision=19237
2009-10-03 00:20:52 +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 1dba786d7b - API: add boinc_elapsed_time() to get elapsed time since start of episode;
add APP_INIT_DATA::starting_elapsed_time to get
    elapsed time from previous episodes

svn path=/trunk/boinc/; revision=18535
2009-07-01 17:35:56 +00:00
David Anderson 6a22356497 - client: when suspending a GPU job,
always remove it from memory, even if it hasn't checkpointed.
    Otherwise we'll typically run another GPU job right away,
    and it will bomb out or revert to CPU mode because it
    can't allocate video RAM

svn path=/trunk/boinc/; revision=18503
2009-06-26 20:54:44 +00:00
David Anderson 575565dc22 - client: fixed nasty bug that caused GPU jobs to crash on startup
when they're preempting another GPU job.
        The problem was as follows:
        - job A is chosen to preempt job B
        - we tell job B to quit, and initialize job A but don't start it;
            however, we set if scheduler state to SCHEDULED
            (rather than UNINITIALIZED)
        - job B exits, and we start job A.
            Since its state is not UNITIALIZED, we don't set up its slot dir.
        - job A runs in an empty slot dir, doesn't find its files, and bombs out.
    - client: add <slot_debug> option (prints messages about
        allocation of slots, creating/removing files in slot dirs).

svn path=/trunk/boinc/; revision=18217
2009-05-28 19:26:27 +00:00
David Anderson af93af28f7 - client: eliminate the need to write the state file on each checkpoint.
Instead, write the info into a file in the slot directory,
		and check for these files on startup.
		This should reduce the overhead of state-file writing
		on machines with lots of cores.
		There will still be a flurry of writes each time a job finishes,
		but reducing that overhead would be a larger job.
	- client: make sure we write the state file after a failed RPC

svn path=/trunk/boinc/; revision=17814
2009-04-15 06:22:53 +00:00
David Anderson b3f07e1a0c - client: show project name in "backoff ended" msg
svn path=/trunk/boinc/; revision=17719
2009-04-01 23:22:17 +00:00
David Anderson 2df9cd38d3 - client: when a job finishes,
clear the project's backoff for its resource type.
    This fixes a problem where a project has a "max jobs in progress"
    limit, and we're backed off because of that.
    We'll now fetch work immediately instead of waiting 24 hrs.

svn path=/trunk/boinc/; revision=17665
2009-03-26 17:39:25 +00:00
David Anderson ed3e3b0063 - client: fix bug where if a GPU job is running,
and a 2nd GPU job with an earlier deadline arrives,
    neither job is executed ever.
    Reorganized things so that scheduling of GPU jobs is
    done independently of CPU jobs.
    The policy for GPU jobs:
    - always EDF
    - jobs are always removed from memory, regardless of checkpoint
    (GPU memory is not paged, so it's bad to leave an idle app in memory)

svn path=/trunk/boinc/; revision=17402
2009-02-26 21:36:41 +00:00
David Anderson feab684b3d - client: abort jobs that are unstarted and past deadline
- client: abort runaway jobs based on elapsed time instead of CPU time.
    Specifically, abort jobs for which
    elapsed time > WU.rsc_fpops_bound / app_version.flops
    This policy works for
    1) GPU jobs (which may use little CPU time)
    2) jobs that run but because of bugs use little CPU time
        (e.g., because they're sleeping)
    whereas the old policy didn't.

svn path=/trunk/boinc/; revision=17399
2009-02-26 17:51:38 +00:00
David Anderson 31e7127776 - client: make timeout values into #defines
svn path=/trunk/boinc/; revision=17396
2009-02-26 03:24:39 +00:00
David Anderson 20feef33f2 - fix possible crash on state file parse failures
svn path=/trunk/boinc/; revision=17371
2009-02-25 15:34:51 +00:00
David Anderson 2574afb41c - client: more instances of showing project with message. Fixes #848
svn path=/trunk/boinc/; revision=17335
2009-02-23 04:54:04 +00:00
David Anderson 298fb2a328 svn path=/trunk/boinc/; revision=16993 2009-01-23 00:06:55 +00:00
David Anderson 268b694932 - client: if an app has avg_ncpus < 1, run it at above-idle priority
even if it doesn't use a coprocessor.
- scheduler: added an "nci" (non CPU intensive) plan class
    to sched_plan.cpp.  It declares the use of 1% of a CPU.

The above two changes are intended to allow the QCN app to
run at above_idle priority, which it needs in order to do 500Hz polling.

- API: the std::string version of boinc_resolve_filename()
    acts the same as the char[] version.

svn path=/trunk/boinc/; revision=16985
2009-01-22 19:51:04 +00:00