From 448c9ab56ddb7410e8491da0fce9023feacdec6b Mon Sep 17 00:00:00 2001 From: David Anderson Date: Fri, 1 Oct 2004 22:00:39 +0000 Subject: [PATCH] *** empty log message *** svn path=/trunk/boinc/; revision=4283 --- checkin_notes | 10 ++ client/cs_scheduler.C | 2 +- client/time_stats.h | 14 +-- doc/create_project.php | 11 +- doc/docutil.php | 6 ++ doc/gui_rpc.php | 6 +- doc/links.php | 5 + doc/multiple_projects.php | 84 +++++++++++++++ doc/participate.php | 2 +- doc/prefs.php | 195 ++++++++++++++++++++++++----------- doc/startup.php | 41 -------- doc/tool_update_versions.php | 9 +- sched/server_types.h | 5 +- 13 files changed, 270 insertions(+), 120 deletions(-) create mode 100644 doc/multiple_projects.php delete mode 100644 doc/startup.php diff --git a/checkin_notes b/checkin_notes index 83dd2c747e..bd58fa88f4 100755 --- a/checkin_notes +++ b/checkin_notes @@ -17984,3 +17984,13 @@ David 1 Oct 2004 cs_account.C cs_prefs.C cs_scheduler.C + +David 1 Oct 2004 + - CLIENT_STATE::avg_proc_rate: include on_frac in the formula + (from Ben Herndon) + + client/ + cs_scheduler.C + time_stats.h + sched/ + server_types.h diff --git a/client/cs_scheduler.C b/client/cs_scheduler.C index 0c3bd6450d..a3958811c1 100644 --- a/client/cs_scheduler.C +++ b/client/cs_scheduler.C @@ -345,7 +345,7 @@ bool CLIENT_STATE::some_project_rpc_ok() { double CLIENT_STATE::avg_proc_rate(PROJECT *p) { return (p->resource_share / trs) * ncpus - * time_stats.active_frac; + * time_state.on_frac * time_stats.active_frac; } // "estimated time to project result count" diff --git a/client/time_stats.h b/client/time_stats.h index f59791ddc8..6c12a4c77a 100644 --- a/client/time_stats.h +++ b/client/time_stats.h @@ -17,22 +17,22 @@ // Contributor(s): // -// keep track of the fraction of time this host is -// "on" (i.e. the core client is running) -// "connected" (to the Internet) -// "active" (not suspended by user activity or prefs) -// -// We maintain an exponentially weighted mean of these quantities - #include "miofile.h" class TIME_STATS { int last_update; bool first; public: +// we maintain an exponentially weighted average of these quantities: double on_frac; + // the fraction of time this host runs the core client double connected_frac; + // of the time running the core client, + // the fraction the host is connected to the Internet double active_frac; + // of the time running the core client, + // the fraction the core client is able to work + // (due to preferences, manual suspend/resume, etc.) void update(bool is_connected, bool is_active); diff --git a/doc/create_project.php b/doc/create_project.php index 0adef9754b..6c8ce1c872 100644 --- a/doc/create_project.php +++ b/doc/create_project.php @@ -86,7 +86,6 @@ The components of a BOINC project, and how to create them.
  • Code signing
  • Adding application versions
  • Upgrading a project's server software -
  • Managing the project web site @@ -132,6 +131,16 @@ Using disk space on participant hosts
  • Deleting files + +Miscellaneous + +
          + +Communicating with participants + + "; page_tail(); ?> diff --git a/doc/docutil.php b/doc/docutil.php index 6c7b86b5d6..60a99d71da 100644 --- a/doc/docutil.php +++ b/doc/docutil.php @@ -72,6 +72,12 @@ function list_item_func($x, $y) { list_item(html_text($x), $y); } +function list_bar($x) { + echo " +
    $x
    + "; +} + function list_end() { echo "

    \n"; } diff --git a/doc/gui_rpc.php b/doc/gui_rpc.php index b5f0d46c67..0f06a68a89 100644 --- a/doc/gui_rpc.php +++ b/doc/gui_rpc.php @@ -104,7 +104,6 @@ list_item_func( ); list_item_func( "get_messages( - int nmessages, int seqno, vector& )", @@ -112,9 +111,8 @@ list_item_func( Each message has a sequence number (1, 2, ...), a priority (1=informational, 2=error) and a timestamp. - The RPC requests the N most recent messages - with sequence numbers greater than M. - They are returned in order of decreasing sequence number." + The RPC requests the messages with sequence numbers greater than M. + They are returned in order of increasing sequence number." ); list_item_func( "file_transfer_op(FILE_TRANSFER&, char* op)", diff --git a/doc/links.php b/doc/links.php index 09699dcf09..feb1e85ddd 100644 --- a/doc/links.php +++ b/doc/links.php @@ -73,6 +73,11 @@ show_link( "www.boinc.de", "http://www.boinc.de/" ); +show_link( + "German", + "BOINC - LUBECA (Lübeck, Germany)", + "http://www.boinc-lubeca.de/" +); show_link( "German", "www.boinc-forum.de", diff --git a/doc/multiple_projects.php b/doc/multiple_projects.php new file mode 100644 index 0000000000..32fc86c01e --- /dev/null +++ b/doc/multiple_projects.php @@ -0,0 +1,84 @@ + + +You can join a second and subsequent projects as follows. +

      +
    1. Visit the second project's web site and create an account. +You don't have to use the same email address, +but if you do so the accounts will be 'coupled' +in terms of preferences and statistics. +
    2. Receive an email containing an account ID. +
    3. Paste the account ID into the project's web site +to complete the account creation. +
    4. Run the BOINC client, and select the Attach to Project command. +Enter the project's URL and your account ID. + +
    + +

    General preferences

    +

    +Each BOINC project has its own database and servers. +Each account has its own copy of your +general preferences. +When you edit your general preferences on a particular project, +initially it changes only that one account. +However, BOINC will eventually +

      +
    1. propagate the new preferences to all computers +attached to that account, and +
    2. propagate the new preferences to all +accounts that are 'coupled' to the first one +(i.e. that have the same email address, +and have at least one computer attached to both accounts). +
    + +This propagation is 'piggybacked' onto the +scheduler requests between your computers and project servers. +You can accelerate the propagation by using +the Update command in the BOINC Manager. + +

    +Be careful about editing general preferences at different projects. +If you change your general preferences at project A, +then edit them at project B before the first changes have propagated there, +the second changes will overwrite the first. +To avoid this, pick a 'home project' and do all your edits there. + +

    Host location

    + +

    +Each host attached to a project has its own +record in the database of that project; +this record includes the location (home/work/school) of the host. +BOINC doesn't try to make these agree - +it's possible that a given host has location 'work' +on project A, and location 'school' on project B. +When the BOINC Manager starts up, it shows you +that locations of the host on all the projects +to which it's attached. + +

    +A host's location on a given project determines which +project preferences are used: +i.e., if a host has location 'home' an project A, +and you've defined separate project preferences for 'home', +it will use those preferences. + +

    +The choice of general preferences (if you've defined +separate preferences) is determined by +the host's location on the project from which the +general preferences were propagated, +i.e. from the project where you last edited them. +So if you edit your general preferences on project A, +a host's location on project A is 'work', +and you've defined separate general preferences for 'work', +the host will use those. + + +"; +page_tail(); +?> diff --git a/doc/participate.php b/doc/participate.php index c5903214be..ea419e1fd9 100644 --- a/doc/participate.php +++ b/doc/participate.php @@ -18,7 +18,7 @@ echo "

  • Preferences
  • Host identification and merging -
  • Participating in multiple projects +
  • Participating in multiple projects
  • Computation credit
  • CPU scheduling
  • Teams diff --git a/doc/prefs.php b/doc/prefs.php index 0517aeeda1..e869acbf43 100644 --- a/doc/prefs.php +++ b/doc/prefs.php @@ -3,95 +3,166 @@ require_once("docutil.php"); page_head("Preferences"); echo "

    -You can specify preferences determining and limiting +You can specify preferences that determine and limit how BOINC uses your computers. -Preferences are divided into two groups: -

    General preferences

    +Preferences are divided into two groups: General and Project. + +

    Editing preferences

    +

    +You can view and edit your preferences via the project's web site. +Click on 'Your account', then 'View or edit preferences'. +This shows you the preferences. +If you want to change anything, +click on 'Edit preferences'. + +

    +When you change your preferences on the web, +the changes won't take effect immediately on your computer; +they'll take effect the next time your computer +connects to the project's server. +If you want this to happen immediately, +bring up the BOINC Manager on your computer, +select the project, and click 'Update'. + +

    +If you're running BOINC on several computers, +preference changes will eventually propagate to all of them. + +

    +If you participate in multiple BOINC projects, +click here +for information about preferences. + +

    Location-specific preferences

    + +If you have computers at several locations (e.g. home, work and school) +you may want to use different preferences for different locations. +The preferences editing system (see above) +lets you create (or delete) separate preferences for home, work, and school. + +

    +Each computer attached to your account has a location. +To view this, go to the project's web site, then click +'Your account' and 'View Computers'. +Click on the ID of the computer you're interested in. +At the bottom of the page there's a popup menu +that lets you see or change the location. +A change to a computer's location will take effect +only when that computer contacts the server; +you can make this happen immediately +using the BOINC Manager's Update command. + +

    +If a computer has its location set to 'home' (for example), +and you've defined separate preferences for home, +it will use those preferences. +Otherwise it will use your default preferences. + +

    +Your account has a 'default location' (home, work, or school). +New computers attaching to your account will be given the default location. +The default location is part of your project preferences, +so to change it, edit your project preferences. + +

    General preferences

    General preferences apply to all BOINC projects in which you participate. They include: "; list_start(); +list_bar("Computing preferences"); list_item("When to work", "You can specify whether work (computation and network transfer) should be done -1) while the host is being used (i.e. during keyboard and mouse input); -2) while the computer is being powered -by batteries (for laptop users). -"); -list_item("Confirm before connect", -"Whether to wait for confirmation before making network connections."); -list_item("Work buffering min and max", -" -Your computer maintains an estimate of the amount of work remaining -(i.e. the time until one of its processors will be idle). -You can choose the minimum work and the -maximum work to keep. -Normally the work remaining is between these two limits. -When the work remaining reaches minimum level, -your computer contacts one or more scheduling servers, -and attempts to get enough work to exceed the maximum level. -

    -This scheme allows computers that are sporadically connected -(because they're portable or have modem-based connections) -to avoid becoming idle due to lack of work. -If the host is frequently disconnected from the Internet, the min -should be at least as long as the typical period of disconnection. -The larger the difference between min and max, the less often -the BOINC client will connect to the Internet. +1) if the computer is in use (i.e. during keyboard and mouse input); +2) if the computer is being powered by batteries (for laptop users). +You can also specify a range of hours when work should be done. "); -list_item("Disk usage limits", + +list_item("Leave applications in memory while preempted", + "If yes, applications will be preempted by suspending and resuming, + rather than quitting. + This uses more virtual memory, but uses CPU time more efficiently." +); + +list_item("Switch between applications every X minutes", + "This determines how often BOINC switches between projects." +); + +list_item("Virtual memory", + "Limit the virtual memory used by BOINC" +); + +list_bar("Disk preferences"); + +list_item("Usage limits", "You can limit the disk space used by BOINC in any of three ways: 1) Maximum disk space used by BOINC; 2) Maximum percentage of total space that can be used by BOINC. 3) Minimum disk space to keep free. "); -list_item("Leave applications in memory while preempted", -"If yes, applications will be preempted by suspend/resume. -This uses more virtual memory, but uses CPU time more efficiently." +list_item("Access interval", + "A suggested interval between disk accesses. + Useful on laptops where the disk may be spun down for long periods. + " +); + +list_bar("Network preferences"); +list_item("Bandwidth limits", + "Limit the number of bytes per second uploaded or downloaded by BOINC." +); +list_item("Network connection preferences", +"Whether to wait for confirmation before making network connections, +and whether to disconnect when done."); + +list_item("Time between network connections", + "Target time between network connections. + When your computer asks a server for work, + it will try to get enough work to last for this long." ); list_end(); echo " -You can view and edit your general preferences through a web interface, -at the site of any project in which you participate. -Changes are automatically propagated to all your hosts; -this is done the next time the host contacts the project's server, -so there may be some delay. -

    Project preferences

    +

    Project preferences

    There is a separate set of project preferences for each project in which you participate. -They include: - +These include: +"; +list_start(); +list_item( + "Resource share", + "If projects contend for resources, + the amount allocated to a project is proportional to this number." +); +list_item( + "Email prefs", + "Whether the project should send you newsletters by email." +); +list_item( + "Hide computer information", + "Whether the project should show information + about your computers + (their CPU and OS type, benchmark ratings etc.; + not their names or addresses) + on its web site." +); +list_item( + "Default computer location", + "The location assigned to computers that attach to this account." +); +list_item( + "Project-specific preferences", + "Defined by the project; + e.g., to specify graphics color schemes." +); +list_end(); +echo"

    -You can view and edit project preferences through -a web interface at the project's web site. -

    Location-specific preferences

    -If you have computers both at home and at work -you may want to use different preferences for them. -In addition to your 'primary preferences' -(which are used by default) -BOINC allows you to create separate preferences for -home, work, and school. -

    -Your account with a project has a 'default location' -(home, work, or school). -New computers registered to your account will be -given the default location. -You can change the location of an existing computer -through the project's web site. "; page_tail(); ?> diff --git a/doc/startup.php b/doc/startup.php deleted file mode 100644 index deec2ffc1a..0000000000 --- a/doc/startup.php +++ /dev/null @@ -1,41 +0,0 @@ - - -You can join a second and subsequent projects as follows. -

      -
    1. Visit the new project's web site and create an account. -Note: if you wish, you can use different email and name -than those of your first account. -
    2. Receive an email containing an account ID (a long random string). -
    3. Run the BOINC client, and select the Attach to Project command. -Enter the project's URL and your account ID. - -
    - -

    Where to edit your preferences

    -

    -Your preferences are stored on BOINC servers. -When your hosts communicate with a server they get the latest preferences, -and they pass along these preferences to other servers. -Thus, when you change your preferences on one project's web site, -these changes will quickly spread to all your hosts, -and to the web sites of all the other projects in which you participate. - -

    -If you change your preferences first at one project -and then at another, the second changes will overwrite the first. -To avoid this, do all your edits at one project. - -

    -Some projects may provide a web interface -for editing their project-specific preferences. -In this case it may be necessary to edit preferences at different sites. -To avoid overwriting edits, -wait until previous edits have propagated to a site -before editing preferences there. -"; -page_tail(); -?> diff --git a/doc/tool_update_versions.php b/doc/tool_update_versions.php index 26718d0290..e592e3e323 100644 --- a/doc/tool_update_versions.php +++ b/doc/tool_update_versions.php @@ -29,7 +29,14 @@ boinc_3.17_i686-pc-linux-gnu.gz astropulse_7.17_windows_intelx86.exe The prefix name and extensions .gz, .exe, .sit are ignored. -Platform strings must match the names of platforms in the database. +

    +Important notes: +

    If a file of the form diff --git a/sched/server_types.h b/sched/server_types.h index c25d900219..1df5f2f270 100644 --- a/sched/server_types.h +++ b/sched/server_types.h @@ -142,8 +142,9 @@ struct SCHEDULER_REPLY { int request_delay; // don't request again until this time elapses char message[1024]; char message_priority[256]; - int hostid; // send this only if nonzero. - // this tells client to reset rpc_seqno + int hostid; + // nonzero only if a new host record was created. + // this tells client to reset rpc_seqno bool send_global_prefs; // whether to send global preferences bool nucleus_only; // send only message bool probable_user_browser;