Changes between Version 64 and Version 65 of ProjectOptions


Ignore:
Timestamp:
May 23, 2008, 3:50:11 PM (17 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ProjectOptions

    v64 v65  
    11[[PageOutline]]
    22
    3 = Project options =
    4 
    5 The following elements in the `<config>` section of your [ProjectConfigFile config.xml] file control various aspects of your project.
    6 
    7 == Scheduling options and parameters == #scheduling
    8 {{{
    9 [ <one_result_per_user_per_wu/> ]
    10 [ <max_wus_to_send> N </max_wus_to_send> ]
    11 [ <max_wus_in_progress> N </max_wus_in_progress> ]
    12 [ <min_sendwork_interval> N </min_sendwork_interval> ]
    13 [ <daily_result_quota> N </daily_result_quota> ]
    14 [ <ignore_delay_bound/> ]
    15 [ <dont_generate_upload_certificates/> ]
    16 [ <ignore_upload_certificates/> ]
    17 [ <locality_scheduling/> ]
    18 [ <locality_scheduling_wait_period> N </locality_scheduling_wait_period> ]
    19 [ <min_core_client_version> N </min_core_client_version> ]
    20 [ <choose_download_url_by_timezone> 0|1 </choose_download_url_by_timezone> ]
    21 [ <cache_md5_info> 0|1 </cache_md5_info> ]
    22 [ <nowork_skip> 0|1 </nowork_skip> ]
    23 [ <resend_lost_results> 0|1 </resend_lost_results> ]
    24 [ <send_result_abort>0|1</send_result_abort> ]
    25 [ <default_disk_max_used_gb> X </default_disk_max_used_gb> ]
    26 [ <default_disk_max_used_pct> X </default_disk_max_used_pct> ]
    27 [ <default_disk_min_free_gb> X </default_disk_min_free_gb> ]
    28 [ <one_result_per_host_per_wu/> ]
    29 [ <next_rpc_delay>x</next_rpc_delay> ]
    30 [ <workload_sim>0|1</workload_sim> ]
    31 [ <shmem_work_items>N</shmem_work_items> ]
    32 [ <feeder_query_size>N</feeder_query_size> ]
    33 [ <homogeneous_redundancy>N</homogeneous_redundancy> ]
    34 [ <ended>0|1</ended> ]
    35 [ <ban_os>regexp</ban_os> ]
    36 [ <ban_cpu>regexp</ban_cpu> ]
    37 [ <max_ncpus>N</max_ncpus> ]
    38 [ <granted_credit_weight>X</granted_credit_weight> ]
    39 [ <granted_credit_ramp_up>N</granted_credit_ramp_up> ]
    40 [ <distinct_beta_apps>0|1</distinct_beta_apps> ]
    41 }}}
    42  '''one_result_per_user_per_wu'''::
    43         If present, send at most one result of a given workunit to a given user. This is useful for checking accuracy/validity of results. It ensures that the results for a given workunit are generated by different users. If you have a validator that compares different results for a given workunits to ensure that they are equivalent, you should probably enable this. Otherwise you may end up validating results from a given user with results from the same user.
    44  '''max_wus_to_send'''::
    45         Maximum results sent per scheduler RPC. Helps prevent hosts with trouble from getting too many results and trashing them. But you should set this large enough so that a host which is only connected to the net at intervals has enough work to keep it occupied in between connections.
    46  '''max_wus_in_progress'''::
    47         Maximum results in progress per CPU. Setting this to something (like 2 for instance) will limit the number of results a given host can simultaneously have registered as 'in progress'.
    48  '''min_sendwork_interval'''::
    49         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.
    50  '''daily_result_quota'''::
    51         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.
    52  '''ignore_delay_bound'''::
    53         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.
    54  '''dont_generate_upload_certificates'''::
    55         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.
    56  '''ignore_upload_certificates'''::
    57         If upload certificates are not generated, this option must be enabled to force file upload handler accept files being uploaded.
    58  '''locality_scheduling'''::
    59         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 [LocalityScheduling Locality Scheduling].
    60  '''locality_scheduling_wait_period'''::
    61         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 [LocalityScheduling Locality Scheduling].
    62  '''min_core_client_version'''::
    63         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.  The version number is expressed as an integer with the encoding major*100+minor.  You can also specify this separately for each [AppVersion application].
    64  '''choose_download_url_by_timezone'''::
    65         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://X/download/123/some_file_name'.
    66  '''cache_md5_info'''::
    67         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.
    68  '''nowork_skip'''::
    69         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.
    70  '''resend_lost_results'''::
    71         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 may increase the efficiency of your project. For reasons that are not well understood, a BOINC client sometimes fails to receive the scheduler reply. This flag addresses that issue: it causes the SAME results to be resent by the scheduler, if the client has failed to receive them.  Note: this will increase the load on your DB server; you can minimize this by creating an index:
     3= Project configuration =
     4
     5The following elements in the `<config>` section of your [ProjectConfigFile config.xml] file
     6control various aspects of your project.
     7All booleans can be expressed as
     8{{{
     9<tag>1</tag>  (true)
     10<tag>0</tag>  (false)
     11<tag/>        (true>
     12}}}
     13
     14== Scheduling == #scheduling
     15{{{
     16<one_result_per_user_per_wu/>
     17}}}
     18If set, send at most one result of a given workunit to a given user. This is useful for checking accuracy/validity of results. It ensures that the results for a given workunit are generated by different users. If you have a validator that compares different results for a given workunits to ensure that they are equivalent, you should probably enable this. Otherwise you may end up validating results from a given user with results from the same user.
     19
     20{{{
     21<max_wus_to_send> N </max_wus_to_send>
     22}}}
     23Maximum results sent per scheduler RPC. Helps prevent hosts with trouble from getting too many results and trashing them. But you should set this large enough so that a host which is only connected to the net at intervals has enough work to keep it occupied in between connections.
     24{{{
     25<max_wus_in_progress> N </max_wus_in_progress>
     26}}}
     27Maximum results in progress per CPU. Setting this to something (like 2 for instance) will limit the number of results a given host can simultaneously have registered as 'in progress'.
     28{{{
     29<min_sendwork_interval> N </min_sendwork_interval>
     30}}}
     31Minimum 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.
     32{{{
     33<daily_result_quota> N </daily_result_quota>
     34}}}
     35Maximum 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.
     36{{{
     37<ignore_delay_bound/>
     38}}}
     39By 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.
     40{{{
     41<dont_generate_upload_certificates/>
     42}}}
     43Don'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.
     44{{{
     45<ignore_upload_certificates/>
     46}}}
     47If upload certificates are not generated, this option must be enabled to force file upload handler accept files being uploaded.
     48{{{
     49<locality_scheduling/>
     50}}}
     51When 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 [LocalityScheduling Locality Scheduling].
     52{{{
     53<locality_scheduling_wait_period> N </locality_scheduling_wait_period>
     54}}}
     55This 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 [LocalityScheduling Locality Scheduling].
     56{{{
     57<min_core_client_version> N </min_core_client_version>
     58}}}
     59If 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.  The version number is expressed as an integer with the encoding major*100+minor.  You can also specify this separately for each [AppVersion application].
     60{{{
     61<choose_download_url_by_timezone> 0|1 </choose_download_url_by_timezone>
     62}}}
     63When 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://X/download/123/some_file_name'.
     64{{{
     65<cache_md5_info> 0|1 </cache_md5_info>
     66}}}
     67When 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.
     68{{{
     69<nowork_skip> 0|1 </nowork_skip>
     70}}}
     71If 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.
     72{{{
     73<resend_lost_results> 0|1 </resend_lost_results>
     74}}}
     75If set, and a <other_results> list is present in scheduler request, resend any in-progress results not in the list. This is recommended; it may increase the efficiency of your project. For reasons that are not well understood, a BOINC client sometimes fails to receive the scheduler reply. This flag addresses that issue: it causes the SAME results to be resent by the scheduler, if the client has failed to receive them.  Note: this will increase the load on your DB server; you can minimize this by creating an index:
    7276{{{
    7377alter table result add index res_host_state (hostid, server_state);
    7478}}}
    75  '''send_result_abort'''::
    76         If set, and the client is processing a result for a WU that has been canceled or is not in the DB (i.e. there's no chance of getting credit), tell the client to abort the result regardless of state. If client is processing a result for a WU that has been assimilated or is overdue (i.e. there's a chance of not getting credit) tell the client to abort the result if it hasn't started yet. Note: this will increase the load on your DB server.
    77  '''default_disk_max_used_gb'''::
    78         Sets the default value for the `disk_max_used_gb` preference so it's 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.
    79  '''default_disk_max_used_pct'''::
    80         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.
    81  '''default_disk_min_free_gb'''::
    82         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.
    83  '''reliable_max_avg_turnaround, reliable_max_error_rate'''::
    84         Hosts whose average turnaround is at most reliable_max_avg_turnaround and whose error rate is at most reliable_max_error_rate are considered 'reliable'.
    85  '''reliable_reduced_delay_bound'''::
    86         When a result is sent to a reliable host, multiply the delay bound by reliable_reduced_delay_bound (typically 0.5 or so).
    87  '''reliable_on_priority, reliable_on_over, reliable_on_over_except_error'''::
    88         Results with priority at least 'reliable_on_priority' will be sent only to reliable hosts; increase priority of duplicate results by 'reliable_priority_on_over'; increase priority of duplicates caused by timeout (not error) by 'reliable_priority_on_over_except_error'.
    89  '''one_result_per_host_per_wu'''::
    90         If present, send at most one result of a given workunit to a given host. This is weaker than `one_result_per_user_per_wu`; it is useful if you're using homogeneous redundancy and most of the hosts of a particular class belong to a single user.
    91  '''next_rpc_delay'''::
    92         In each scheduler reply, tell the clients to do another scheduler RPC after at most X seconds, regardless of whether they need work.  This is useful, e.g., to ensure that in-progress jobs can be canceled in a bounded amount of time.
    93  '''workload_sim'''::
    94         Do a simulation, based on current client workload, in deciding whether a job's deadline can be met.
    95  '''shmem_work_items'''::
    96      The size of the shared-memory array of jobs.  Default is 100.
    97  '''feeder_query_size'''::
    98      The size of the feeder's enumeration query.  Default is 200.
    99  '''homogeneous_redundancy'''::
    100    If zero (default) don't use the [HomogeneousRedundancy homogeneous redundancy] mechanism.
    101    Otherwise, specifies the granularity of host classification (1=fine, 2=coarse).
    102  '''ended'''::
    103     Project has permanently ended.  Tell clients so user can be notified.
    104  '''ban_os'''::
    105     Any host for which os_name<tab>os_version matches the given regular expression will not be sent jobs. This is a POSIX extended regular expression.
    106  '''ban_cpu'''::
    107     Any host for which p_vendor<tab>p_model matches the given regular expression will not be sent jobs. This is a POSIX extended regular expression.
    108  '''max_ncpus'''::
    109        Treat all hosts as having no more than N CPUs.  This affects things like max results per day.  Use this, e.g., if your application uses a GPU or other co-processor.
    110  '''granted_credit_weight'''::
    111     KEVIN - PLEASE EXPLAIN
    112  '''distinct_beta_apps'''::
    113    If set, [AppFiltering user application selection] applies to [BetaTest beta test applications] as well as others.
     79{{{
     80<send_result_abort>0|1</send_result_abort>
     81}}}
     82If set, and the client is processing a result for a WU that has been canceled or is not in the DB (i.e. there's no chance of getting credit), tell the client to abort the result regardless of state. If client is processing a result for a WU that has been assimilated or is overdue (i.e. there's a chance of not getting credit) tell the client to abort the result if it hasn't started yet. Note: this will increase the load on your DB server.
     83{{{
     84<default_disk_max_used_gb> X </default_disk_max_used_gb>
     85}}}
     86Sets the default value for the `disk_max_used_gb` preference so it's 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.
     87{{{
     88<default_disk_max_used_pct> X </default_disk_max_used_pct>
     89}}}
     90Sets 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.
     91{{{
     92<default_disk_min_free_gb> X </default_disk_min_free_gb>
     93}}}
     94Sets 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.
     95{{{
     96<one_result_per_host_per_wu/>
     97}}}
     98If present, send at most one result of a given workunit to a given host. This is weaker than `one_result_per_user_per_wu`; it is useful if you're using homogeneous redundancy and most of the hosts of a particular class belong to a single user.
     99{{{
     100<next_rpc_delay>x</next_rpc_delay>
     101}}}
     102In each scheduler reply, tell the clients to do another scheduler RPC after at most X seconds, regardless of whether they need work.  This is useful, e.g., to ensure that in-progress jobs can be canceled in a bounded amount of time.
     103{{{
     104<workload_sim>0|1</workload_sim>
     105}}}
     106Do a simulation, based on current client workload, in deciding whether a job's deadline can be met.
     107{{{
     108<shmem_work_items>N</shmem_work_items>
     109}}}
     110The size of the shared-memory array of jobs.  Default is 100.
     111{{{
     112<feeder_query_size>N</feeder_query_size>
     113}}}
     114 The size of the feeder's enumeration query.  Default is 200.
     115{{{
     116<homogeneous_redundancy>N</homogeneous_redundancy>
     117}}}
     118If zero (default) don't use the [HomogeneousRedundancy homogeneous redundancy] mechanism.
     119Otherwise, specifies the granularity of host classification (1=fine, 2=coarse).
     120{{{
     121<ended>0|1</ended>
     122}}}
     123Project has permanently ended.  Tell clients so user can be notified.
     124{{{
     125<ban_os>regexp</ban_os>
     126}}}
     127Any host for which os_name<tab>os_version matches the given regular expression will not be sent jobs. This is a POSIX extended regular expression.
     128{{{
     129<ban_cpu>regexp</ban_cpu>
     130}}}
     131Any host for which p_vendor<tab>p_model matches the given regular expression will not be sent jobs. This is a POSIX extended regular expression.
     132{{{
     133<max_ncpus>N</max_ncpus>
     134}}}
     135Treat all hosts as having no more than N CPUs.  This affects things like max results per day.  Use this, e.g., if your application uses a GPU or other co-processor.
     136{{{
     137<granted_credit_weight>X</granted_credit_weight>
     138}}}
     139{{{
     140<granted_credit_ramp_up>N</granted_credit_ramp_up>
     141}}}
     142{{{
     143<distinct_beta_apps>0|1</distinct_beta_apps>
     144}}}
     145If set, [AppFiltering user application selection] applies to [BetaTest beta test applications] as well as others.
     146}}}
     147Hosts whose average turnaround is at most reliable_max_avg_turnaround and whose error rate is at most reliable_max_error_rate are considered 'reliable'.
     148{{{
     149<reliable_reduced_delay_bound>X</reliable_reduced_delay_bound>
     150}}}
     151When a result is sent to a reliable host, multiply the delay bound by reliable_reduced_delay_bound (typically 0.5 or so).
     152{{{
     153<reliable_on_priority>X</reliable_on_priority>
     154<reliable_on_over>X</reliable_on_over>
     155<reliable_on_over_except_error>X</reliable_on_over_except_error>
     156}}}
     157Results with priority at least 'reliable_on_priority' will be sent only to reliable hosts; increase priority of duplicate results by 'reliable_priority_on_over'; increase priority of duplicates caused by timeout (not error) by 'reliable_priority_on_over_except_error'.
     158{{{
     159<granted_credit_weight>X</granted_credit_weight>
     160}}}
     161KEVIN - PLEASE EXPLAIN
    114162
    115163=== Deprecated options ===
    116164
    117  '''<no_darwin_6>1</no_darwin_6>'''::
    118    Don't issue work to Macintoshes with Darwin 6 or earlier (Mac OS X 10.2 or earlier). Equivalent to
     165{{{
     166<no_darwin_6>1</no_darwin_6>
     167}}}
     168Don't issue work to Macintoshes with Darwin 6 or earlier (Mac OS X 10.2 or earlier). Equivalent to
    119169{{{
    120170<ban_os>.*Darwin.*\t.*(5\.|6\.).*</ban_os>
    121171}}}
    122  '''<no_amd_k6>1</no_amd_k6>'''::
    123    Don't issue work to clients with AMD K6 processors.  Equivalent to
     172{{{
     173<no_amd_k6>1</no_amd_k6>
     174}}}
     175Don't issue work to clients with AMD K6 processors.  Equivalent to
    124176{{{
    125177<ban_cpu>.*AMD.*\t.*Family 5 Model 8 Stepping 0.*</ban_cpu>
     
    128180== Client control == #client-control
    129181{{{
    130 [ <verify_files_on_app_start/> ]
    131 [ <symstore>URL</symstore> ]
    132 [ <min_core_client_version_announced> N </min_core_client_version_announced> ]
    133 [ <min_core_client_upgrade_deadline> N </min_core_client_upgrade_deadline> ]
    134 [ <msg_to_host/> ]
    135 [ <non_cpu_intensive> 0|1 </non_cpu_intensive> ]
    136 }}}
    137  '''verify_files_on_app_start'''::
    138         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).
    139  '''symstore'''::
    140         URL of your project's symbol store, used for debugging Windows applications.
    141  '''min_core_client_version_announced'''::
    142         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.
    143  '''min_core_client_upgrade_deadline'''::
    144         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.
    145  '''msg_to_host'''::
    146         If present, check the msg_to_host table on each RPC, and send the client any messages queued for it.
    147  '''non_cpu_intensive'''::
    148         If this flag is present, the project will be treated specially by the client:
    149 
    150  * The client will download one result at a time.
    151  * This result will be executed whenever computation is enabled (bypassing the normal scheduling mechanism).
     182<verify_files_on_app_start/>
     183}}}
     184Before 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).
     185{{{
     186<symstore>URL</symstore>
     187}}}
     188URL of your project's symbol store, used for debugging Windows applications.
     189{{{
     190<min_core_client_version_announced> N </min_core_client_version_announced>
     191}}}
     192Announce 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.
     193{{{
     194<min_core_client_upgrade_deadline> N </min_core_client_upgrade_deadline>
     195}}}
     196Use 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.
     197{{{
     198<msg_to_host/>
     199}}}
     200If present, check the msg_to_host table on each RPC, and send the client any messages queued for it.
     201{{{
     202<non_cpu_intensive> 0|1 </non_cpu_intensive>
     203}}}
     204If this flag is present, the project will be treated specially by the client:
     205
     206* The client will download one result at a time.
     207* This result will be executed whenever computation is enabled (bypassing the normal scheduling mechanism).
    152208
    153209This is intended for [NonCpuIntensive applications that use little CPU time], e.g. that do network or host measurements.
     
    155211== Server logging == #server-logging
    156212{{{
    157 [ <sched_debug_level> N </sched_debug_level> ]
    158 [ <fuh_debug_level> N </fuh_debug_level> ]
    159 }}}
    160  '''sched_debug_level'''::
    161         Verbosity level for scheduler log output. 1=minimal, 2=normal (default), 3=verbose.
    162  '''fuh_debug_level'''::
    163         Verbosity level for file upload handler log output. 1=minimal, 2=normal (default), 3=verbose.
     213<sched_debug_level> N </sched_debug_level>
     214}}}
     215Verbosity level for scheduler log output. 1=minimal, 2=normal (default), 3=verbose.
     216{{{
     217<fuh_debug_level> N </fuh_debug_level>
     218}}}
     219Verbosity level for file upload handler log output. 1=minimal, 2=normal (default), 3=verbose.
    164220
    165221The following boolean options enable various types of debugging output:
    166222
    167  '''debug_version_select'''::
    168   Explain app version selection.
    169  '''debug_assignment'''::
    170   Explain the sending of [AssignedWork assigned work].
    171  '''debug_prefs'''::
    172   Show the propagation of global prefs.
    173  '''debug_send'''::
    174   Explain the sending of jobs.
    175  '''debug_request_headers'''::
    176   Show HTTP request headers.
    177  '''debug_user_messages'''::
    178   Show messages we're sending to the user.
    179  '''debug_request_details'''::
    180   Show details of request message.
    181  '''debug_handle_results'''::
    182   Show the handling of reported jobs.
    183  '''debug_edf_sim_workload'''::
    184   Show the initial conditions of EDF simulation
    185  '''debug_edf_sim_detail'''::
    186   Show the details of EDF simulation
     223{{{
     224<debug_version_select/>
     225}}}
     226Explain app version selection.
     227{{{
     228<debug_assignment/>
     229}}}
     230Explain the sending of [AssignedWork assigned work].
     231{{{
     232<debug_prefs/>
     233}}}
     234Show the propagation of global prefs.
     235{{{
     236<debug_send/>
     237}}}
     238Explain the sending of jobs.
     239{{{
     240<debug_request_headers/>
     241}}}
     242Show HTTP request headers.
     243{{{
     244<debug_user_messages/>
     245}}}
     246Show messages we're sending to the user.
     247{{{
     248<debug_request_details/>
     249}}}
     250Show details of request message.
     251{{{
     252<debug_handle_results/>
     253}}}
     254Show the handling of reported jobs.
     255{{{
     256<debug_edf_sim_workload/>
     257}}}
     258Show the initial conditions of EDF simulation
     259{{{
     260<debug_edf_sim_detail/>
     261}}}
     262Show the details of EDF simulation
    187263
    188264== Credit ==
    189265(See also the command-line options of the [ValidationIntro validator]).
    190266{{{
    191 [ <fp_benchmark_weight> X </fp_benchmark_weight> ]
    192 }}}
    193  '''fp_benchmark_weight'''::
    194         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.
     267<fp_benchmark_weight> X </fp_benchmark_weight>
     268}}}
     269The 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.
    195270
    196271== File deletion policy == #file-deletion
    197272{{{
    198 [ <delete_delay_hours>X</delete_delay_hours> ]
    199 [ <httpd_user>username</httpd_user> ]
    200 }}}
    201  '''delete_delay_hours'''::
    202  Wait X hours before deleting files.
    203  This provides a 'grace period' during which late results will still get credit.
    204  '''httpd_user'''::
    205  The user name under which the web server runs.
    206  As a safeguard, the file deleter skips files not owned by this user.
     273<delete_delay_hours>X</delete_delay_hours>
     274}}}
     275Wait X hours before deleting files.
     276This provides a 'grace period' during which late results will still get credit.
     277{{{
     278<httpd_user>username</httpd_user>
     279}}}
     280The user name under which the web server runs.
     281As a safeguard, the file deleter skips files not owned by this user.
    207282
    208283== Server status page options == #server-status
    209284{{{
    210 [ <www_host>hostname</www_host> ]
    211 [ <sched_host>hostname</sched_host> ]
    212 [ <uldl_host>hostname</uldl_host> ]
    213 [ <uldl_pid>path</uldl_pid> ]
    214 [ <ssh_exe>path</ssh_exe> ]
    215 [ <ps_exe>path</ps_exe> ]
    216 }}}
    217  '''www_host'''::       Host name of web server.
    218  '''sched_host'''::     Host name of scheduling server.
    219  '''uldl_host'''::      Host name of upload/download server.
    220  '''uldl_pid'''::       pid file of upload/download server (default: `/etc/httpd/run/httpd.pid`).
    221  '''ssh_exe'''::        path to `ssh` (default: `/usr/bin/ssh`).
    222  '''ps_exe'''::         path to `ps` (which supports "w" flag) (default: `/bin/ps`).
     285<www_host>hostname</www_host>
     286}}}
     287Host name of web server.
     288{{{
     289<sched_host>hostname</sched_host>
     290}}}
     291Host name of scheduling server.
     292{{{
     293<uldl_host>hostname</uldl_host>
     294}}}
     295Host name of upload/download server.
     296{{{
     297<uldl_pid>path</uldl_pid>
     298}}}
     299pid file of upload/download server (default: `/etc/httpd/run/httpd.pid`).
     300{{{
     301<ssh_exe>path</ssh_exe>
     302}}}
     303path to `ssh` (default: `/usr/bin/ssh`).
     304{{{
     305<ps_exe>path</ps_exe>
     306}}}
     307path to `ps` (which supports "w" flag) (default: `/bin/ps`).
    223308
    224309
    225310== Web site features == #website
    226311{{{
    227 [ <profile_screening/> ]
    228 [ <show_results/> ]
    229 [ <no_forum_rating/> ]
    230 [ <akismet_key> 1234567890ab </akismet_key> ]
    231 [ <users_per_page>N</users_per_page> ]
    232 [ <teams_per_page>N</teams_per_page> ]
    233 [ <hosts_per_page>N</hosts_per_page> ]
    234 [ <recaptcha_public_key>X</recaptcha_public_key> ]
    235 [ <recaptcha_private_key>X</recaptcha_private_key> ]
    236 [ <profile_min_credit>X</profile_min_credit> ]
    237 [ <team_forums_members_only>0|1</team_forum_members_only> ]
    238 [ <moderators_vote_to_ban>0|1</moderators_vote_to_ban> }
    239 }}}
    240  '''profile_screening'''::
    241         If present, don't show profile pictures until they've been screened and approved by project admins.
    242  '''show_results'''::
    243         Enable web site features that show results (per user, host, etc.)
    244  '''no_forum_rating'''::
    245         Disable forum post rating.
    246  '''akismet_key'''::
    247         If set, akismet.com is used to check post contents to protect forums from spam. See [ProtectionFromSpam Protecting message boards from spam] for more information.
    248  '''users/teams/hosts_per_page'''::
    249    Number of entries per page for top users/teams/hosts.  Default is 20.
    250  '''recaptcha public/private keys'''::
    251     Enable the use of Recaptcha for profile creation/editing; see [ProtectionFromSpam Protecting message boards from spam] for more information.
    252  '''profile_min_credit'''::
    253    The minimum amount of credit to create or edit a profile.
    254  '''team_forums_members_only'''::
    255    If set, team message boards are visible only to team members.
    256  '''moderators_vote_to_ban'''::
    257    If set, banishments require a majority vote among moderators.
     312<profile_screening/>
     313}}}
     314If present, don't show profile pictures until they've been screened and approved by project admins.
     315{{{
     316<show_results/>
     317}}}
     318Enable web site features that show results (per user, host, etc.)
     319{{{
     320<no_forum_rating/>
     321}}}
     322Disable forum post rating.
     323{{{
     324<akismet_key> 1234567890ab </akismet_key>
     325}}}
     326If set, akismet.com is used to check post contents to protect forums from spam. See [ProtectionFromSpam Protecting message boards from spam] for more information.
     327{{{
     328<users_per_page>N</users_per_page>
     329}}}
     330Number of entries per page for top users/teams/hosts.  Default is 20.
     331{{{
     332<teams_per_page>N</teams_per_page>
     333}}}
     334{{{
     335<hosts_per_page>N</hosts_per_page>
     336}}}
     337{{{
     338<recaptcha_public_key>X</recaptcha_public_key>
     339<recaptcha_private_key>X</recaptcha_private_key>
     340}}}
     341Enable the use of Recaptcha for profile creation/editing; see [ProtectionFromSpam Protecting message boards from spam] for more information.
     342{{{
     343<profile_min_credit>X</profile_min_credit>
     344}}}
     345The minimum amount of credit to create or edit a profile.
     346{{{
     347<team_forums_members_only>0|1</team_forum_members_only>
     348}}}
     349If set, team message boards are visible only to team members.
     350{{{
     351<moderators_vote_to_ban>0|1</moderators_vote_to_ban>
     352}}}
     353If set, banishments require a majority vote among moderators.
    258354
    259355== Miscellaneous == #misc
    260356{{{
    261 [ <disable_account_creation/> ]
    262 [ <min_passwd_length> N </min_passwd_length> ]
    263 }}}
    264  '''disable_account_creation'''::
    265         If present, disallow account creation.
    266  '''min_passwd_length'''::
    267         Minimum length of user passwords. Default is 6.
    268  '''request_time_stats_log'''::
    269    If nonzero, the scheduler will tell clients (via scheduler replies) to
    270    upload (via scheduler requests) their time stats log
    271    (which contains records of when the client started and stopped running).
     357<disable_account_creation/>
     358}}}
     359If present, disallow account creation.
     360{{{
     361<min_passwd_length> N </min_passwd_length>
     362}}}
     363Minimum length of user passwords. Default is 6.
     364{{{
     365<request_time_stats_log/>
     366}}}
     367If present, the scheduler will tell clients (via scheduler replies) to
     368upload (via scheduler requests) their time stats log
     369(which contains records of when the client started and stopped running).
    272370
    273371== Hosts, directories, and URLs == #dirs
     
    276374{{{
    277375<master_url>            URL                   </master_url>
     376}}}
     377{{{
    278378<long_name>             name                  </long_name>
     379}}}
     380{{{
    279381<host>                  project.hostname.ip   </host>
     382}}}
     383name of project's main host, as given by Python's `socket.hostname()`. Daemons and tasks run on this host by default.
     384{{{
    280385<db_name>               databasename          </db_name>
     386}}}
     387Database name.
     388{{{
    281389<db_host>               database.host.ip      </db_host>
     390}}}
     391Database host machine.
     392{{{
    282393<db_user>               database_user_name    </db_user>
     394}}}
     395Database user name.
     396{{{
    283397<db_passwd>             database_password     </db_passwd>
     398}}}
     399Database password.
     400{{{
    284401<shmem_key>             shared_memory_key     </shmem_key>
     402}}}
     403ID of scheduler shared memory. Must be unique on host.
     404{{{
    285405<download_url>          http://A/URL          </download_url>
     406}}}
     407URL of data server for download.
     408{{{
    286409<download_dir>          /path/to/directory    </download_dir>
     410}}}
     411absolute path of download directory.
     412{{{
    287413<uldl_dir_fanout>       N                     </uldl_dir_fanout>
     414}}}
     415fan-out factor of upload and download directories (see [DirHierarchy Hierarchical upload/download directories]).
     416{{{
    288417<upload_url>            http://A/URL          </upload_url>
     418}}}
     419URL of file upload handler.
     420{{{
    289421<upload_dir>            /path/to/directory    </upload_dir>
     422}}}
     423absolute path of upload directory.
     424{{{
    290425<cgi_url>               http://A/URL          </cgi_url>
     426}}}
     427URL of scheduling server.
     428{{{
    291429<log_dir>               /path/to/directory    </log_dir>
    292 <!-- optional; defaults as indicated: -->
    293     <bin_dir>      bin      </bin_dir>      <!-- relative to project_dir -->
    294     <cgi_bin_dir>  cgi-bin  </cgi_dir>      <!-- relative to project_dir -->
    295 [ <sched_lockfile_dir> path </sched_lockfile_dir> ]
    296 }}}
    297  '''host'''::
    298         name of project's main host, as given by Python's `socket.hostname()`. Daemons and tasks run on this host by default.
    299  '''db_name'''::
    300         Database name.
    301  '''db_host'''::
    302         Database host machine.
    303  '''db_user'''::
    304         Database user name.
    305  '''db_passwd'''::
    306         Database password.
    307  '''shmem_key'''::
    308         ID of scheduler shared memory. Must be unique on host.
    309  '''download_url'''::
    310         URL of data server for download.
    311  '''download_dir'''::
    312         absolute path of download directory.
    313  '''download_dir_alt'''::
    314         absolute path of old download directory (see [DirHierarchy upload/download directories]).
    315  '''upload_url'''::
    316         URL of file upload handler.
    317  '''uldl_dir_fanout'''::
    318         fan-out factor of upload and download directories (see [DirHierarchy Hierarchical upload/download directories]).
    319  '''upload_dir'''::
    320         absolute path of upload directory.
    321  '''cgi_url::
    322         URL of scheduling server.
    323  '''log_dir'''::
    324         absolute path of logfile directory.
    325  '''sched_lockfile_dir'''::
    326         Enables scheduler locking (recommended) and specifies directory where scheduler lockfiles are stored. Must be writable to the Apache user.
     430}}}
     431absolute path of logfile directory.
     432{{{
     433<bin_dir>      bin      </bin_dir>      <!-- relative to project_dir -->
     434}}}
     435{{{
     436<cgi_bin_dir>  cgi-bin  </cgi_dir>      <!-- relative to project_dir -->
     437}}}
     438{{{
     439<sched_lockfile_dir> path </sched_lockfile_dir>
     440}}}
     441Enables scheduler locking (recommended) and specifies directory where scheduler lockfiles are stored. Must be writable to the Apache user.
    327442
    328443= Parsing project options = #parsing-config
     
    333448 * PHP: use the get_config() and parse_config() functions in inc/util.inc
    334449 * scripts: use the bin/parse_config program
     450