boinc/client
David Anderson 2d6d69ac86 - client: fix problems with job scheduling policy.
Old: job scheduling has 2 phases.
        In the first phase (schedule_cpus()) we make a list of jobs,
        with deadline-miss and high-STD jobs first.
        Keep track of the RAM used,
        and skip jobs that would exceed available RAM.
        Stop scanning when the # of CPUs used by jobs in the list
        exceeds the # of actual CPUs.

        In the 2nd phase (enforce_schedule()), we add currently running jobs
        (which may be in the middle of a time slice) to the list,
        and reorder to give priority to such jobs,
        and possibly also to multi-thread jobs.
        We then run and/or preempt jobs, keeping track of RAM used.

    Problems:
        - suppose we add an EDF 1-CPU job to the list, then a MT job.
            We'll stop at that point because #CPUs is exceeded.
            But enforce_schedule() won't run the MT job,
            and CPUs will be idle.
        - Because the list may be reordered, skipping jobs based
            on RAM is not correct, and may cause deadlines to be missed.

    New:
        - when making the job list, keep track of #CPUs used
            by MT jobs and non-MT jobs separately.
            Stop the scan only if the non-MT count exceeds #CPUs.
            This ensures that we have enough jobs to use all the CPUs,
            even if the MT jobs can't be run for whatever reason.
        - don't skip jobs because of RAM usage
        - skip MT jobs if the MT CPU count is at least #CPUs

    Notes:
        - ignoring RAM usage in phase 1 can cause idleness in some cases,
            e.g. suppose there are 4 GB of RAM and the list has
            jobs that use 3 GB, but there are also some jobs that use 1 GB.
            I'm not sure how to fix this.
        - Maybe the 2-phase approach is not a good idea.
            We did it this way for efficiency,
            so that we don't have to recompute the job list
            each time a job checkpoints.
            But this is probably not a concern,
            and I like the idea of a simpler approach,
            e.g. reducing the policy to a single comparison function.


svn path=/trunk/boinc/; revision=22615
2010-11-03 17:13:51 +00:00
..
os2
scripts - Added checks for net/*.h, arpa/*.h, netinet/*.h and code to figure out 2009-02-26 00:23:23 +00:00
win Update copyright information 2009-12-16 21:08:17 +00:00
Makefile.am - client: on startup, generate a message and notice 2010-10-18 20:31:27 +00:00
Makefile.curl.am - rename .C files to .cpp so that Doxygen will work 2008-09-26 18:20:24 +00:00
Makefile.linux - rename .C files to .cpp so that Doxygen will work 2008-09-26 18:20:24 +00:00
acct_mgr.cpp - client simulator: major remodel and upgrade. 2010-09-24 20:02:42 +00:00
acct_mgr.h - finish the above 2010-09-08 20:20:02 +00:00
acct_setup.cpp - client: on startup, generate a message and notice 2010-10-18 20:31:27 +00:00
acct_setup.h - client: on startup, generate a message and notice 2010-10-18 20:31:27 +00:00
app.cpp - scheduler: fix logic that deals with jobs that need > 2GB RAM. 2010-10-27 22:58:16 +00:00
app.h compile fix 2010-09-24 20:37:45 +00:00
app_control.cpp - client: if we suspend apps because non-BOINC CPU is is too high, 2010-09-28 21:48:31 +00:00
app_graphics.cpp - client: standardize debug messages. 2010-04-29 20:32:51 +00:00
app_start.cpp - client: linux compile fix 2010-10-26 19:47:12 +00:00
app_stats_mac.cpp - rename .C files to .cpp so that Doxygen will work 2008-09-26 18:20:24 +00:00
auto_update.cpp - client simulator: major remodel and upgrade. 2010-09-24 20:02:42 +00:00
auto_update.h - added copyright and license info to .C, .cpp, .h files 2008-08-06 18:36:30 +00:00
boinc_cmd.cpp - GUI RPC: when resolving hostnames, ask for only IPV4 addresses. 2010-10-07 18:08:20 +00:00
boinc_log.cpp - client: add ".xml" to notice file names 2010-07-01 02:01:05 +00:00
build_po - scheduler: make messages translatable 2010-07-13 02:49:35 +00:00
check_security.cpp Mac Installer: if adding non-admin users to group boinc_master, add to group boinc_project: fixes permissions error -1200; add "Please wait" alert 2010-02-05 04:34:43 +00:00
check_state.cpp - scheduler: estimate peak FLOPS of anon platform app versions 2010-06-18 22:21:36 +00:00
client_msgs.cpp - client and manager: fix notice titles 2010-10-29 18:58:26 +00:00
client_msgs.h - scheduler: don't send translatable strings to pre-6.12 clients 2010-10-28 21:46:18 +00:00
client_state.cpp - client simulator: various fixes 2010-10-19 15:48:33 +00:00
client_state.h - client: on startup, generate a message and notice 2010-10-18 20:31:27 +00:00
client_types.cpp - client: small initial checkin for new scheduling system. 2010-10-29 23:41:34 +00:00
client_types.h - client simulator: model the scheduler's deadline check mechanism 2010-11-01 16:53:41 +00:00
coproc_detect.cpp - API/client: move CUdevice_attribute_enum out of lib/coproc.h 2010-10-13 23:33:02 +00:00
cpp.h - client: refactor the CC startup process, move majority of the 2009-08-03 20:55:00 +00:00
cpu_benchmark.h - added copyright and license info to .C, .cpp, .h files 2008-08-06 18:36:30 +00:00
cpu_sched.cpp - client: fix problems with job scheduling policy. 2010-11-03 17:13:51 +00:00
cs_account.cpp - client: make all MSG_USER_ALERT messages (i.e., those shown as notices) 2010-06-08 23:37:44 +00:00
cs_apps.cpp - client: when an app exits, adjust debts before erasing ACTIVE_TASK. 2010-10-14 19:07:02 +00:00
cs_benchmark.cpp - client: if we successfully did CPU benchmarks, 2010-09-15 23:38:59 +00:00
cs_cmdline.cpp svn path=/trunk/boinc/; revision=22610 2010-10-30 23:25:35 +00:00
cs_files.cpp - client simulator: major remodel and upgrade. 2010-09-24 20:02:42 +00:00
cs_notice.cpp - client: notice debugging 2010-10-18 21:03:07 +00:00
cs_notice.h - client simulator: various fixes 2010-10-19 15:48:33 +00:00
cs_platforms.cpp - client & lib: bring header inclusion up-to-date for the CC to begin 2010-05-11 19:10:29 +00:00
cs_prefs.cpp - client simulator: updates. Fix web interface. 2010-10-07 21:41:31 +00:00
cs_proxy.cpp - client: add ".xml" to notice file names 2010-07-01 02:01:05 +00:00
cs_proxy.h - client: sort out proxy_info mess. 2009-12-05 00:51:05 +00:00
cs_scheduler.cpp - client: when an app exits, adjust debts before erasing ACTIVE_TASK. 2010-10-14 19:07:02 +00:00
cs_statefile.cpp - client: distinguish between messages to be displayed as HTML 2010-10-18 20:09:51 +00:00
cs_trickle.cpp - client & lib: bring header inclusion up-to-date for the CC to begin 2010-05-11 19:10:29 +00:00
current_version.cpp svn path=/trunk/boinc/; revision=22550 2010-10-18 20:31:54 +00:00
current_version.h svn path=/trunk/boinc/; revision=22550 2010-10-18 20:31:54 +00:00
dhrystone.cpp - client & lib: bring header inclusion up-to-date for the CC to begin 2010-05-11 19:10:29 +00:00
dhrystone.h
dhrystone2.cpp - client: temporarily enable logic that deallocates memory on exit, 2010-05-11 19:50:14 +00:00
file_names.cpp - client & lib: bring header inclusion up-to-date for the CC to begin 2010-05-11 19:10:29 +00:00
file_names.h - client: keep track of daily history of network transfers 2010-04-21 22:05:55 +00:00
file_xfer.cpp - client: standardize debug messages. 2010-04-29 20:32:51 +00:00
file_xfer.h - client: when looking for new file xfers to start, 2010-04-01 05:54:29 +00:00
gui_http.cpp - client: the client shouldn't check for a physical connection 2010-07-22 19:13:36 +00:00
gui_http.h - client: the client shouldn't check for a physical connection 2010-07-22 19:13:36 +00:00
gui_rpc_server.cpp - client: distinguish between messages to be displayed as HTML 2010-10-18 20:09:51 +00:00
gui_rpc_server.h - client: a bit of IPv6 compatibility 2010-09-15 17:41:25 +00:00
gui_rpc_server_ops.cpp - client: write GPU info to client_state.xml, 2010-09-23 20:54:49 +00:00
hostinfo_network.cpp - client: revert to old network functions (gethostbyname() etc.) on Win: 2010-09-15 20:33:44 +00:00
hostinfo_network.h - added copyright and license info to .C, .cpp, .h files 2008-08-06 18:36:30 +00:00
hostinfo_unix.cpp - scheduler: fix logic that deals with jobs that need > 2GB RAM. 2010-10-27 22:58:16 +00:00
hostinfo_unix_test.cpp - Added checks for net/*.h, arpa/*.h, netinet/*.h and code to figure out 2009-02-26 00:23:23 +00:00
hostinfo_win.cpp - scheduler: fix logic that deals with jobs that need > 2GB RAM. 2010-10-27 22:58:16 +00:00
http_curl.cpp - client: fix a bug that caused GPU apps to fail on startup 2010-08-11 23:03:09 +00:00
http_curl.h - client: the client shouldn't check for a physical connection 2010-07-22 19:13:36 +00:00
install-sh
log_flags.cpp - client: msg tweak 2010-10-20 23:45:49 +00:00
log_flags.h - client simulator: updates. Fix web interface. 2010-10-07 21:41:31 +00:00
main.cpp - client: distinguish between messages to be displayed as HTML 2010-10-18 20:09:51 +00:00
main.h - client: distinguish between messages to be displayed as HTML 2010-10-18 20:09:51 +00:00
makefile_sim - client: msg tweak 2010-10-20 23:45:49 +00:00
net_stats.cpp - client: small initial checkin for new scheduling system. 2010-10-29 23:41:34 +00:00
net_stats.h - client: fix notice ordering bug 2010-06-18 17:09:18 +00:00
pers_file_xfer.cpp - client: on resume from net bandwidth quota suspend, 2010-05-12 04:00:14 +00:00
pers_file_xfer.h - client: change the calculation of exponential backoff used for 2010-07-09 19:24:13 +00:00
rr_sim.cpp - client: maintain "gpu_active_frac" in addition to "active_frac" 2010-08-23 05:00:22 +00:00
rr_sim.h - client: when looking for new file xfers to start, 2010-04-01 05:54:29 +00:00
rrsim_test.cpp - rename .C files to .cpp so that Doxygen will work 2008-09-26 18:20:24 +00:00
sandbox.cpp - client: add ".xml" to notice file names 2010-07-01 02:01:05 +00:00
sandbox.h - client: fix bug in insufficient video RAM feature 2009-12-14 19:24:06 +00:00
scheduler_op.cpp - client: msg tweak 2010-10-20 23:45:49 +00:00
scheduler_op.h - client: msg tweak 2010-10-20 23:45:49 +00:00
setprojectgrp.cpp - Added checks for net/*.h, arpa/*.h, netinet/*.h and code to figure out 2009-02-26 00:23:23 +00:00
sim.cpp - client simulator: model the scheduler's deadline check mechanism 2010-11-01 16:53:41 +00:00
sim.h - client simulator: various fixes 2010-10-19 15:48:33 +00:00
sim_host.xml *** empty log message *** 2007-04-04 19:34:01 +00:00
sim_prefs.xml *** empty log message *** 2007-04-04 19:34:01 +00:00
sim_projects.xml *** empty log message *** 2007-04-04 19:34:01 +00:00
sim_util.cpp - client simulator: various fixes 2010-10-19 15:48:33 +00:00
stream.cpp - rename .C files to .cpp so that Doxygen will work 2008-09-26 18:20:24 +00:00
switcher.cpp client sandbox: set LD_LIBRARY_PATH and DYLD_LIBRARY_PATH in switcher 2010-01-12 11:36:18 +00:00
sysmon_win.cpp - client: Fix autoproxy detection so that it doesn't break platforms that 2010-08-03 16:57:18 +00:00
sysmon_win.h - client: Second pass through the automatic proxy detection code. 2009-08-07 18:16:21 +00:00
test_fx_in
test_fx_out
test_fx_out1
time_stats.cpp - client: add <no_info_fetch> config option and --no_info_fetch 2010-09-27 20:34:47 +00:00
time_stats.h - client: maintain "gpu_active_frac" in addition to "active_frac" 2010-08-23 05:00:22 +00:00
whetstone.cpp - client & lib: bring header inclusion up-to-date for the CC to begin 2010-05-11 19:10:29 +00:00
work_fetch.cpp - client: update STD of ineligible projects by decay only. 2010-10-23 22:19:48 +00:00
work_fetch.h - client simulator: model the scheduler's deadline check mechanism 2010-11-01 16:53:41 +00:00