mirror of https://github.com/BOINC/boinc.git
homogeneous redundancy enhancement
svn path=/trunk/boinc/; revision=9552
This commit is contained in:
parent
79bedb43ec
commit
c9ea119568
|
@ -2340,3 +2340,17 @@ David 24 Feb 2006
|
|||
http_curl.C,h
|
||||
net_xfer_curl.C,h
|
||||
pers_file_xfer.C
|
||||
|
||||
David 24 Feb 2006
|
||||
- Scheduler: increment the infeasible count for a result
|
||||
in a slot that cannot be sent to a host because
|
||||
the workunit has already be assigned to a different platform.
|
||||
This helps projects that use homogenous redundancy
|
||||
because once the result is marked infeasible
|
||||
it will be checked for compatibility for a given host first,
|
||||
thus leaving results for workunits that have not yet
|
||||
been assigned free for other hosts.
|
||||
(from Kevin Reed, WCG)
|
||||
|
||||
sched/
|
||||
sched_array.C
|
||||
|
|
|
@ -24,6 +24,9 @@ If you have one or more of the relevant technical skills
|
|||
(C++ system programming, PHP/MySQL web development,
|
||||
WxWidgets programming, autoconf/automake expertise, etc.)
|
||||
you may be able to help us maintain and enhance BOINC.
|
||||
The University of California holds the copyright on all BOINC source code;
|
||||
by contributing code to BOINC you implicitly assign the copyright
|
||||
to the University of California.
|
||||
In any case, you are welcome to browse the source code and give us feedback.
|
||||
You should understand how BOINC works
|
||||
(for both <a href=participate.php>participants</a>
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
<?
|
||||
|
||||
$project_news = array(
|
||||
array("February 22, 2006",
|
||||
"BOINC announces its
|
||||
<a href=mac_intel.php>support for the Macintosh/Intel platform</a>.
|
||||
"
|
||||
),
|
||||
array("February 19, 2006",
|
||||
"<a href=http://boinccast.podhost.de/>BOINCcast</a>
|
||||
is the first German Podcast about BOINC.
|
||||
|
|
|
@ -33,6 +33,10 @@ switch(rand(0,4)) {
|
|||
case 4: $url_base = "http://morel.mit.edu/download/boinc/dl/"; break;
|
||||
}
|
||||
|
||||
if ($dev) {
|
||||
$url_base = "dl/";
|
||||
}
|
||||
|
||||
function dl_item($x, $y) {
|
||||
global $light_blue;
|
||||
echo "<tr><td valign=top align=right width=30% bgcolor=$light_blue>$x</td>
|
||||
|
|
|
@ -50,7 +50,7 @@ list_item("url",
|
|||
list_item("md5_cksum", "The MD5 checksum of the file."
|
||||
);
|
||||
list_item("nbytes",
|
||||
"the size of the file in bytes (may be greater than 2^32)."
|
||||
"the size of the file in bytes."
|
||||
);
|
||||
list_item("max_nbytes",
|
||||
"The maximum allowable size of the file in bytes (may be greater than 2^32).
|
||||
|
@ -171,6 +171,51 @@ deletes input and output files that are no longer needed.
|
|||
This can be suppressed using the 'no_delete' flag,
|
||||
or using command-line options to the file deleter.
|
||||
</ul>
|
||||
|
||||
<a name=compression></a>
|
||||
<h3>File compression</h3>
|
||||
|
||||
<p>
|
||||
Starting with version 5.4, the BOINC client
|
||||
is able to handle HTTP Content-Encoding types 'deflate' (zlib algorithm)
|
||||
and 'gzip' (gzip algorithm).
|
||||
The client decompresses these files 'on the fly' and
|
||||
stores them on disk in uncompressed form.
|
||||
<p>
|
||||
Projects can set this encoding in two ways:
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
Use the Apache 2.0 mod_deflate module to automatically
|
||||
compress files on the fly.
|
||||
This method will work with all BOINC clients,
|
||||
but it will do compression only for 5.4+ clients.
|
||||
|
||||
<li>
|
||||
Compress their workunits when they create them and use
|
||||
a filename suffix such as '.gz'.
|
||||
In httpd.conf make sure that the following line is present:
|
||||
<pre>
|
||||
AddEncoding x-gzip .gz
|
||||
</pre>
|
||||
This will add the content encoding to the header so that
|
||||
the client will decompress the file automatically.
|
||||
This method has the advantage of reducing server disk usage
|
||||
and server CPU load,
|
||||
but it will only work with 5.4+ clients.
|
||||
Use the 'min_core_version' field of the app_version table to enforce this.
|
||||
|
||||
</ul>
|
||||
|
||||
You can also use these in conjunction because the mod_deflate module
|
||||
allows you to exempt certain filetypes from on-the-fly compression.
|
||||
|
||||
<p>
|
||||
Neither of these methods stores files in compressed form on the client.
|
||||
For this, you must do compression at the application level.
|
||||
The BOINC source distribution includes
|
||||
<a href=boinc_zip.txt>a version of the zip library</a>
|
||||
designed for use by BOINC applications on any platform.
|
||||
";
|
||||
page_tail();
|
||||
?>
|
||||
|
|
|
@ -75,10 +75,13 @@ resources.
|
|||
<li> Enter the project's URL (visit the project's web site,
|
||||
and copy the URL from your browser's address field).
|
||||
</ul>
|
||||
<a href=participate.php>More info</a>
|
||||
| <a href=links.php>Web sites </a>
|
||||
| <a href=download_network.php>Add-ons</a>
|
||||
| <a href=dev/>Message boards</a>
|
||||
<center>
|
||||
<a href=participate.php><b>More info</a>
|
||||
| <a href=download.php><b>Download</a>
|
||||
| <a href=links.php><b>Web sites </a>
|
||||
| <a href=download_network.php><b>Add-ons</a>
|
||||
| <a href=dev/><b>Message boards</a>
|
||||
</center>
|
||||
|
||||
</td></tr>
|
||||
<tr><td bgcolor=$light_blue><h2>Create a volunteer computing project</h2></td></tr>
|
||||
|
|
|
@ -27,16 +27,13 @@ The goals of the CPU scheduler and work-fetch policies are
|
|||
(because results reported after their deadline
|
||||
may not have any value to the project and may not be granted credit).
|
||||
<li> NCPUS processors should be kept busy.
|
||||
<li> At any given point, enough work should be kept on hand
|
||||
<li> At any given point, a computer should have enough work
|
||||
so that NCPUS processors will be busy for at least
|
||||
min_queue days (min_queue is a user preference).
|
||||
<li> Project resource shares should be honored over the long term.
|
||||
<li> Variety: if a computer is attached to multiple projects,
|
||||
execution should rotate among projects on a frequent basis.
|
||||
</ul>
|
||||
The policies are designed to accommodate all scenarios,
|
||||
including those with computers that are slow or are attached
|
||||
to a large number of projects.
|
||||
|
||||
<p>
|
||||
In previous versions of BOINC,
|
||||
|
@ -54,9 +51,8 @@ A computer attached to 10 projects might
|
|||
have work for only a few (perhaps only one) at a given time.
|
||||
<li>
|
||||
If deadlines are threatened,
|
||||
the CPU scheduling policy switches to a mode
|
||||
(earliest deadline first) that optimizes the likelihood
|
||||
of meeting deadlines, at the expense of variety.
|
||||
the CPU scheduling policy optimizes the likelihood of meeting deadlines,
|
||||
at the expense of variety.
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -153,17 +149,16 @@ It is defined for all projects,
|
|||
and adjusted over the set of potentially runnable projects.
|
||||
It is normalized so that average long-term debt is zero.
|
||||
|
||||
<h2>The CPU scheduling policy</h2>
|
||||
<h2>CPU scheduling policy</h2>
|
||||
|
||||
<p>
|
||||
The CPU scheduler uses an earliest-deadline-first (EDF) policy
|
||||
for results that are in danger of missing their deadline,
|
||||
and round-robin among other projects if additional CPUs exist.
|
||||
and weighted round-robin among other projects if additional CPUs exist.
|
||||
This allows the client to meet deadlines that would otherwise be missed,
|
||||
while honoring resource shares over the long term.
|
||||
The scheduler uses the following data, which are obtained
|
||||
by a simulation of round-robin scheduling
|
||||
applied to the current work queue:
|
||||
by a simulation of round-robin scheduling applied to the current work queue:
|
||||
<ul>
|
||||
<li> deadline_missed(R): whether result R would miss
|
||||
its deadline with round-robin scheduling.
|
||||
|
@ -200,6 +195,12 @@ when new results become runnable,
|
|||
or when the user performs a UI interaction
|
||||
(e.g. suspending or resuming a project or result).
|
||||
|
||||
<p>
|
||||
The CPU scheduler produces a list of results to run,
|
||||
but they are not necessarily run immediately;
|
||||
the enforcement of the schedule is done asynchronously.
|
||||
A currently
|
||||
|
||||
<h2>Work-fetch policy</h2>
|
||||
|
||||
<p>
|
||||
|
|
|
@ -136,10 +136,34 @@ everyone else should connect to that process.
|
|||
<li> Do General Tests from a modem, ISDN, or VPN-connected computer.
|
||||
<br>see the <a href=dialup.php>Dial-up Connections</a> page
|
||||
for details about dial-up connections.
|
||||
<li> Test 'confirm before connect' preference.
|
||||
<li> Test 'Disconnect when done' preference.
|
||||
<li> Do these tests with both single-user and Service-mode install (Windows).
|
||||
</ul>
|
||||
<li> Test the connection options:
|
||||
<ul><li>set default connection
|
||||
<li>verify the manager uses the defaunt connection
|
||||
<li>proper notification when default hasn't been set
|
||||
</ul>
|
||||
<li> Test 'confirm before connect' preference.
|
||||
<br>'confirm' not set:
|
||||
<ul>
|
||||
<li>Test connections are automatically made when 'confirm' isn't set
|
||||
<li>Test proper operation when no user is logged on (service install)
|
||||
</ul>
|
||||
'confirm' set:
|
||||
<ul>
|
||||
<li>Check proper operation with both 'yes' and 'no' replies to the
|
||||
confirmation dialog
|
||||
<li>Check proper operation when confirm dialog is ignored
|
||||
<br>dialog should disappear after a few minutes, with another
|
||||
prompt later
|
||||
<br>(fill in times)
|
||||
<li>With manager running only in the systray, check balloon popup
|
||||
indicating BOINC needs a network connection
|
||||
</ul>
|
||||
<li> Test 'Disconnect when done' preference.
|
||||
<li> Check that network activity is retried when dialup connection
|
||||
is established - pending scheduler requests and file transfers
|
||||
get retried.
|
||||
<li> Do these tests with both single-user and Service-mode install (Windows).
|
||||
</ul>
|
||||
<h3>Tests for computers with personal firewalls</h3>
|
||||
<ul>
|
||||
<li> Do General tests on a computer that uses a personal firewall
|
||||
|
|
|
@ -168,6 +168,15 @@ void scan_work_array(
|
|||
if (already_sent_to_different_platform(
|
||||
sreq, wu_result.workunit, reply.wreq
|
||||
)) {
|
||||
log_messages.printf(SCHED_MSG_LOG::MSG_DEBUG,
|
||||
"[HOST#%d] [WU#%d %s] WU is infeasible (assigned to different platform)\n",
|
||||
reply.host.id, wu.id, wu.name
|
||||
);
|
||||
// Mark the workunit as infeasible.
|
||||
// This ensures that work already assigned to a platform
|
||||
// is processed first.
|
||||
//
|
||||
wu_result.infeasible_count++;
|
||||
goto dont_send;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue