diff --git a/doc/boinc_news.inc b/doc/boinc_news.inc index 428f61bf2c..0c12f894ba 100644 --- a/doc/boinc_news.inc +++ b/doc/boinc_news.inc @@ -1,6 +1,13 @@ $project_news = array( +array("July 26, 2006", + "Chess960@home + is open for testers. + This project studies a game that is like classical chess + except that the initial configuration of pieces + is chosen randomly from among 960 possibilities." +), array("July 25, 2006", "Welcome to three new BOINC-based projects. Two are mathematical: diff --git a/doc/docutil.php b/doc/docutil.php index 17133c478b..2a15e546b3 100644 --- a/doc/docutil.php +++ b/doc/docutil.php @@ -20,6 +20,10 @@ function last_mod($datefile) { } function page_head($title) { + if (defined("CHARSET")) { + header("Content-type: text/html; charset=".tr(CHARSET)); + } + echo "
diff --git a/doc/index.php b/doc/index.php index efa3b4a0f4..f0353af990 100644 --- a/doc/index.php +++ b/doc/index.php @@ -1,6 +1,5 @@ ]*)>([^<]*)', $line, $matches); + $tag = $matches[1]; + $val = $matches[2]; + if (strstr($tag, 'text')) { + if ($val) { + $sums[$tag][] = str_replace("\\r\\n", "\n", urldecode($val)); + } + } else { + if ($val) { + $sums[$tag][$val]++; + } + } + } +} + +function bar($n, $ntotal) { + if ($ntotal==0) { + return "$n "; + } + $w = (int)(100*$n/$ntotal); + if (!$w) $w=1; + return " $n "; +} + +function other_link($sums, $other_name, $link_text, $ntotal) { + $y = ""; + $n = count($sums[$other_name]); + if ($n) { + $fname = "poll_$other_name.txt"; + $b = bar($n, $ntotal); + $y .= "$b $link_text"; + $f = fopen($fname, "w"); + foreach ($sums[$other_name] as $text) { + fwrite($f, $text); + fwrite($f, "\n-----------------\n"); + } + fclose($f); + } else { + $y .= "$link_text"; + } + return $y; +} + +function display_choice($sums, $choice, $ntotal) { + global $run_boinc; + $text = $choice['text']; + $rname = $choice['rname']; + $radio_name = $choice['radio_name']; + if ($rname) { + $n = $sums[$run_boinc][$rname]; + if (!$n) $n = 0; + $b = bar($n, $ntotal); + $x = "$b $text\n"; + } else { + $x = "$text\n"; + } + $y = ""; + if ($radio_name) { + $ntotal = 0; + foreach($choice['options'] as $name=>$text) { + $ntotal += $sums[$radio_name][$name]; + } + foreach($choice['options'] as $name=>$text) { + $n = $sums[$radio_name][$name]; + if (!$n) $n = 0; + $b = bar($n, $ntotal); + $y .= "$b $text
+";
+list_start();
+list_bar('Do you run BOINC?');
+display_choices($sums, $overall_choices);
+list_bar('Your participation');
+display_choices($sums, $project_items);
+list_bar('Your computers');
+display_choices($sums, $comp_items);
+list_bar('You');
+display_choices($sums, $you_items);
+display_countries($sums);
+list_bar('Comments');
+list_item2(
+ "Please suggest ways that BOINC,
+ and the projects that use it, could be improved:",
+ other_link($sums, $improved, "Show", 0)
+);
+
+list_end();
+page_tail();
+
+$f = fopen($cachefile, "w");
+fwrite($f, ob_get_contents());
+fclose($f);
+
+?>
diff --git a/doc/project_options.php b/doc/project_options.php
new file mode 100644
index 0000000000..4198e33b81
--- /dev/null
+++ b/doc/project_options.php
@@ -0,0 +1,365 @@
+config.xml file
+control various aspects of your project.
+";
+echo html_text("
+
+Your project's periodic tasks are described in its
+config.xml file,
+with elements of the following form:
+";
+
+echo html_text("
+
+
+ This is intended for
+ applications that use little CPU time,
+ e.g. that do network or host measurements."
+);
+list_item("min_sendwork_interval",
+ "Minimum number of seconds to wait after sending results to a given
+ host, before new results are sent to the same host. Helps prevent
+ hosts with download or application problems from trashing lots of
+ results by returning lots of error results. But don't set it to be so
+ long that a host goes idle after completing its work, before getting
+ new work."
+);
+list_item("daily_result_quota",
+ "Maximum number of results (per CPU) sent to a given host in a 24-hour
+ period. Helps prevent hosts with download or application problems from
+ returning lots of error results. Be sure to set it large enough that
+ a host does not go idle in a 24-hour period, and can download enough
+ work to keep it busy if disconnected from the net for a few days. The
+ maximum number of CPUS is bounded at four."
+);
+list_item("ignore_delay_bound",
+ "By default, results are not sent to hosts too slow to complete them within delay bound.
+ If this flag is set, this rule is not enforced."
+);
+list_item("dont_generate_upload_certificates",
+ "Don't put upload certificates in results.
+ This makes result generation a lot faster,
+ since no encryption is done,
+ but you lose protection against DoS attacks
+ on your upload servers."
+);
+list_item("locality_scheduling",
+ "When possible, send work that uses the same files that the host
+ already has. This is intended for projects which have large data
+ files, where many different workunits use the same data file. In
+ this case, to reduce download demands on the server, it may be
+ advantageous to retain the data files on the hosts, and send
+ them work for the files that they already have.
+ See Locality Scheduling."
+);
+list_item("locality_scheduling_wait_period",
+ "This element only has an effect when used in conjunction with the
+ previous locality scheduling element. It tells the scheduler to
+ use 'trigger files' to inform the project that more work is
+ needed for specific files. The period is the number of seconds
+ which the scheduler will wait to see if the project can create
+ additional work. Together with project-specific daemons or
+ scripts this can be used for 'just-in-time' workunit
+ creation. See Locality Scheduling."
+);
+list_item("min_core_client_version",
+ "If the scheduler gets a request from a client with
+ a version number less than this,
+ it returns an error message and doesn't do any other processing."
+);
+list_item("choose_download_url_by_timezone",
+ "When the scheduler sends work to hosts, it replaces the download
+ URL appearing in the data and executable file descriptions with
+ the download URL closest to the host's timezone. The project
+ must provide a two-column file called 'download_servers' in the
+ project root directory. This is a list of all download servers
+ that will be inserted when work is sent to hosts. The first column
+ is an integer listing the server's offset in seconds from UTC.
+ The second column is the server URL in the format such as
+ http://einstein.phys.uwm.edu. The download servers must
+ have identical file hierarchies and contents, and the path to
+ file and executables must start with '/download/...' as in
+ 'http://einstein.phys.uwm.edu/download/123/some_file_name'."
+);
+list_item("cache_md5_info",
+ "When creating work, keep a record (in files called foo.md5) of the
+ file length and md5 sum of data files and executables. This can
+ greatly reduce the time needed to create work, if (1) these files
+ are re-used, and (2) there are many of these files, and (3) reading
+ the files from disk is time-consuming."
+);
+list_item("min_core_client_version_announced",
+ "Announce a new version of the BOINC core client, which in the future
+ will be the minimum required version. In conjunction with the next
+ tag, you can warn users with version below this to upgrade by a
+ specified deadline. Example value: 419."
+);
+list_item("min_core_client_upgrade_deadline",
+ "Use in conjunction with the previous tag. The value given here is the
+ Unix epoch returned by time(2) until which hosts can update their
+ core client. After this time, they may be shut out of the project.
+ Before this time, they will receive messages warning them to upgrade."
+);
+list_item("nowork_skip",
+ "If the scheduling server has no work,
+ it replies to RPCs without doing any database access
+ (e.g., without looking up the user or host record).
+ This reduces DB load, but it fails to update
+ preferences when users click on Update.
+ Use it if your server DB is overloaded."
+);
+list_item("resend_lost_results",
+ "If set, and a <other_results> list is present
+ in scheduler request,
+ resend any in-progress results not in the list.
+ This is recommended;
+ it should increase the efficiency of your project"
+);
+list_item("min_passwd_length",
+ "Minimum length of user passwords. Default is 6."
+);
+list_item("fp_benchmark_weight",
+ "The weighting given to the Whetstone benchmark
+ in the calculation of claimed credit.
+ Must be in [0 .. 1].
+ Projects whose applications are floating-point intensive should use 1;
+ pure integer applications, 0.
+ Choosing an appropriate value will reduce the disparity
+ in claimed credit between hosts.
+ The script html/ops/credit_study.php,
+ run against the database of a running project,
+ will suggest what value to use."
+);
+
+list_item("default_disk_max_used_gb", "Sets the default value for
+ the disk_max_used_gb preference so its consistent between the
+ scheduler and web pages. The scheduler uses it when a request
+ for work doesn't include preferences, or the preference is set
+ to zero. The web page scripts use it to set the initial value
+ when displaying or editing preferences the first time, or when
+ the user never saved them. Default is 100.
+");
+
+list_item("default_disk_max_used_pct", "Sets the default value for
+ the disk_max_used_pct preference so its consistent between the
+ scheduler and web pages. The scheduler uses it when a request
+ for work doesn't include preferences, or the preference is set
+ to zero. The web page scripts use it to set the initial value
+ when displaying or editing preferences the first time, or when
+ the user never saved them. Default is 50.
+");
+
+list_item("default_disk_min_free_gb", "Sets the default value for
+ the disk_min_free_gb preference so its consistent between the
+ scheduler and web pages. The scheduler uses it when a request
+ for work doesn't include preferences. The web page scripts use
+ it to set the initial value when displaying or editing
+ preferences the first time, or when the user never saved them.
+ Also, the scheduler uses this setting to override any smaller
+ preference from the host, it enforces a 'minimum free disk space'
+ to keep from filling up the drive. Recommend setting this no
+ smaller than .001 (1MB or 1,000,000 bytes). Default is .001.
+");
+
+list_item("sched_disk_space_check_hardcoded", "Controls how the
+ above three settings are interpreted by the web page php scripts.
+ This setting is for projects that updated the php scripts to
+ get the default disk space usage settings from config.xml, but
+ haven't updated their scheduler to do the same.
+");
+
+list_item("max_claimed_credit",
+ "If a result claims more credit than this, mark it as invalid."
+);
+list_item("grant_claimed_credit",
+ "If set, grant the claimed credit,
+ regardless of what other results for this workunit claimed.
+ These is useful for projects where
+ different instances of the same job
+ can do much different amounts of work.
+ "
+);
+list_item("symstore",
+ "URL of your project's symbol store,
+ used for debugging Windows applications."
+);
+list_item("dont_delete_batches",
+ "If this boolean is set,
+ the file deleter won't delete any files for which
+ the corresponding workunit or result record has
+ a positive value of the the 'batch' field.
+ This lets you keep files on disk until you're done with them.
+ Create workunits with a positive batch number,
+ and zero out (or negate) the batch number when you're done
+ looking at the files
+ (you can do this with a SQL query).
+ If you use this option, replace the indices on
+ file_delete_state with indices on (file_delete_state, batch)."
+);
+list_item("sched_debug_level",
+ "Verbosity level for scheduler log output.
+ 1=minimal, 2=normal (default), 3=verbose."
+);
+list_item("fuh_debug_level",
+ "Verbosity level for file upload handler log output.
+ 1=minimal, 2=normal (default), 3=verbose."
+);
+list_item("verify_files_on_app_start",
+ "Before starting or restarting an app,
+ check contents of input files and app version files
+ by either MD5 or digital signature check.
+ Detects user tampering with file
+ (but doesn't really increase security,
+ since user could also change MD5s or signatures in
+ client state file)."
+);
+
+list_end();
+
+page_tail();
+?>
diff --git a/doc/project_tasks.php b/doc/project_tasks.php
new file mode 100644
index 0000000000..5e59699b06
--- /dev/null
+++ b/doc/project_tasks.php
@@ -0,0 +1,115 @@
+Periodic tasks are programs that are run periodically.
+They are executed by the bin/start --cron program,
+which you should run from cron.
+(To do this, run crontab and add a line of the form
+
+0,5,10,15,20,25,30,35,40,45,50,55 * * * * HOME/projects/PROJECT/bin/start --cron
+
+
+Periodic tasks are short-running, but in case they aren't,
+the 'start' script detect when an instance is still running
+and won't start another instance.
+
+