From c9ea119568dfea0db2f3b3958edcc1c281f44365 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Sat, 25 Feb 2006 00:21:39 +0000 Subject: [PATCH] homogeneous redundancy enhancement svn path=/trunk/boinc/; revision=9552 --- checkin_notes | 14 ++++++++++++++ doc/boinc_dev.php | 3 +++ doc/boinc_news.inc | 5 +++++ doc/download.php | 4 ++++ doc/files.php | 47 ++++++++++++++++++++++++++++++++++++++++++++- doc/index.php | 11 +++++++---- doc/sched.php | 23 +++++++++++----------- doc/test_matrix.php | 32 ++++++++++++++++++++++++++---- sched/sched_array.C | 11 ++++++++++- 9 files changed, 129 insertions(+), 21 deletions(-) diff --git a/checkin_notes b/checkin_notes index 883da55999..393356c21f 100755 --- a/checkin_notes +++ b/checkin_notes @@ -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 diff --git a/doc/boinc_dev.php b/doc/boinc_dev.php index bd04a4d929..c69b1397a0 100644 --- a/doc/boinc_dev.php +++ b/doc/boinc_dev.php @@ -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 participants diff --git a/doc/boinc_news.inc b/doc/boinc_news.inc index 5221e085a3..520139de9c 100644 --- a/doc/boinc_news.inc +++ b/doc/boinc_news.inc @@ -1,6 +1,11 @@ support for the Macintosh/Intel platform. + " +), array("February 19, 2006", "BOINCcast is the first German Podcast about BOINC. diff --git a/doc/download.php b/doc/download.php index 76b194e5d0..d6cc90b743 100755 --- a/doc/download.php +++ b/doc/download.php @@ -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 "$x diff --git a/doc/files.php b/doc/files.php index 7d12a5726d..e7da032af1 100644 --- a/doc/files.php +++ b/doc/files.php @@ -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. + + +

File compression

+ +

+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. +

+Projects can set this encoding in two ways: + +

+ +You can also use these in conjunction because the mod_deflate module +allows you to exempt certain filetypes from on-the-fly compression. + +

+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 version of the zip library +designed for use by BOINC applications on any platform. "; page_tail(); ?> diff --git a/doc/index.php b/doc/index.php index 3cf5e602ac..a053af035d 100644 --- a/doc/index.php +++ b/doc/index.php @@ -75,10 +75,13 @@ resources.

  • Enter the project's URL (visit the project's web site, and copy the URL from your browser's address field). - More info - | Web sites - | Add-ons - | Message boards +
    + More info + | Download + | Web sites + | Add-ons + | Message boards +

    Create a volunteer computing project

    diff --git a/doc/sched.php b/doc/sched.php index e6ed1dda3c..0558951cb3 100644 --- a/doc/sched.php +++ b/doc/sched.php @@ -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).
  • NCPUS processors should be kept busy. -
  • At any given point, enough work should be kept on hand +
  • 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).
  • Project resource shares should be honored over the long term.
  • Variety: if a computer is attached to multiple projects, execution should rotate among projects on a frequent basis. -The policies are designed to accommodate all scenarios, -including those with computers that are slow or are attached -to a large number of projects.

    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.

  • 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. @@ -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. -

    The CPU scheduling policy

    +

    CPU scheduling policy

    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:

    • 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). +

      +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 +

      Work-fetch policy

      diff --git a/doc/test_matrix.php b/doc/test_matrix.php index d691f82e26..3895c55fc6 100644 --- a/doc/test_matrix.php +++ b/doc/test_matrix.php @@ -136,10 +136,34 @@ everyone else should connect to that process.

    • Do General Tests from a modem, ISDN, or VPN-connected computer.
      see the Dial-up Connections page for details about dial-up connections. -
    • Test 'confirm before connect' preference. -
    • Test 'Disconnect when done' preference. -
    • Do these tests with both single-user and Service-mode install (Windows). -
    +
  • Test the connection options: +
    • set default connection +
    • verify the manager uses the defaunt connection +
    • proper notification when default hasn't been set +
    +
  • Test 'confirm before connect' preference. +
    'confirm' not set: +
      +
    • Test connections are automatically made when 'confirm' isn't set +
    • Test proper operation when no user is logged on (service install) +
    + 'confirm' set: +
      +
    • Check proper operation with both 'yes' and 'no' replies to the + confirmation dialog +
    • Check proper operation when confirm dialog is ignored +
      dialog should disappear after a few minutes, with another + prompt later +
      (fill in times) +
    • With manager running only in the systray, check balloon popup + indicating BOINC needs a network connection +
    +
  • Test 'Disconnect when done' preference. +
  • Check that network activity is retried when dialup connection + is established - pending scheduler requests and file transfers + get retried. +
  • Do these tests with both single-user and Service-mode install (Windows). +

    Tests for computers with personal firewalls

    • Do General tests on a computer that uses a personal firewall diff --git a/sched/sched_array.C b/sched/sched_array.C index 0bfe7fa324..1e003c4487 100644 --- a/sched/sched_array.C +++ b/sched/sched_array.C @@ -168,7 +168,16 @@ void scan_work_array( if (already_sent_to_different_platform( sreq, wu_result.workunit, reply.wreq )) { - goto dont_send; + 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; } }