Changes between Version 114 and Version 115 of ProjectOptions


Ignore:
Timestamp:
Nov 12, 2011, 5:11:03 AM (9 years ago)
Author:
cries
Comment:

sched/sched_config.cpp:43:const int MAX_NCPUS = 64; (Revision: 24340)

Legend:

Unmodified
Added
Removed
Modified
  • ProjectOptions

    v114 v115  
    22
    33= Project configuration =
    4 
    5 The following elements in the `<config>` section of your [ProjectConfigFile config.xml] file
    6 control various aspects of your project.
    7 Booleans default to false, and can be expressed as
     4The following elements in the `<config>` section of your [wiki:ProjectConfigFile config.xml] file control various aspects of your project. Booleans default to false, and can be expressed as
     5
    86{{{
    97<tag>1</tag>  (true)
     
    119<tag/>        (true)
    1210}}}
    13 
    1411== Scheduler ==
    15 
    16 These options control how jobs are dispatched to clients.
    17 This is also affected by the parameters you
    18 pass to the [BackendPrograms feeder].
     12These options control how jobs are dispatched to clients. This is also affected by the parameters you pass to the [wiki:BackendPrograms feeder].
    1913
    2014=== General ===
    21 
    2215{{{
    2316<ban_cpu>regexp</ban_cpu>
    2417}}}
    25 Any host for which p_vendor<tab>p_model matches the given regular expression will not be sent jobs.
    26 This is a POSIX extended regular expression.
     18Any 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.
     19
    2720{{{
    2821<ban_os>regexp</ban_os>
    2922}}}
    30 Any host for which os_name<tab>os_version matches the given regular expression will not be sent jobs.
    31 This is a POSIX extended regular expression.
     23Any 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.
     24
    3225{{{
    3326<distinct_beta_apps>0|1</distinct_beta_apps>
    3427}}}
    35 If set, [AppFiltering user application selection] applies to [BetaTest beta test applications] as well as others.
     28If set, [wiki:AppFiltering user application selection] applies to [wiki:BetaTest beta test applications] as well as others.
     29
    3630{{{
    3731<homogeneous_redundancy>N</homogeneous_redundancy>
    3832}}}
    39 If zero (default) don't use the [HomogeneousRedundancy homogeneous redundancy] mechanism.
    40 Otherwise, specifies the granularity of host classification (1=fine, 2=coarse).
    41 (Note: you may also specify this on a per-application basis).
     33If zero (default) don't use the [wiki:HomogeneousRedundancy homogeneous redundancy] mechanism. Otherwise, specifies the granularity of host classification (1=fine, 2=coarse). (Note: you may also specify this on a per-application basis).
     34
    4235{{{
    4336<ignore_delay_bound/>
    4437}}}
    45 By default, results are not sent to hosts too slow to complete them within delay bound.
    46 If this flag is set, this rule is not enforced.
     38By 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.
     39
    4740{{{
    4841<multiple_clients_per_host>0|1</multiple_clients_per_host>
    4942}}}
    50 Set this if some of your hosts run multiple BOINC clients simultaneously
    51 (this is the case on projects that use Condor and/or grid resources,
    52 which require each client to use only 1 CPU).
    53 If set, the scheduler will skip a check that tries to locate the host
    54 based on its IP address.
     43Set this if some of your hosts run multiple BOINC clients simultaneously (this is the case on projects that use Condor and/or grid resources, which require each client to use only 1 CPU). If set, the scheduler will skip a check that tries to locate the host based on its IP address.
     44
    5545{{{
    5646<nowork_skip> 0|1 </nowork_skip>
    5747}}}
    58 If the scheduler has no work, it replies to RPCs without doing any database access
    59 (e.g., without looking up the user or host record).
    60 This reduces DB load, but it fails to update preferences when users click on Update.
    61 Use it if your server DB is overloaded.
     48If the scheduler 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.
     49
    6250{{{
    6351<prefer_primary_platform> 0|1 </prefer_primary_platform>
    6452}}}
    65 Send hosts app versions for their primary platform if one exists;
    66 e.g. if a host is 64-bit, don't send it a 32-bit CPU version if a 64-bit CPU version exists.
    67 Use this option only if you're sure that your 64-bit versions are faster than the 32-bit versions.
     53Send hosts app versions for their primary platform if one exists; e.g. if a host is 64-bit, don't send it a 32-bit CPU version if a 64-bit CPU version exists. Use this option only if you're sure that your 64-bit versions are faster than the 32-bit versions.
     54
    6855{{{
    6956<report_grace_period>x</report_grace_period>
    7057}}}
    71 A "grace period" for task reporting.
    72 A task is considered time-out (and a new replica generated)
    73 if it is not reported by client_deadline + x.
     58A "grace period" for task reporting. A task is considered time-out (and a new replica generated) if it is not reported by client_deadline + x.
    7459
    7560{{{
    7661<user_filter>0|1</user_filter>
    7762}}}
    78 If set, use the "batch" field of workunits to select which user is
    79 allowed to process the job.
    80 If batch is nonzero, only send the job to the user with that ID.
     63If set, use the "batch" field of workunits to select which user is allowed to process the job. If batch is nonzero, only send the job to the user with that ID.
    8164
    8265{{{
    8366<workload_sim>0|1</workload_sim>
    8467}}}
    85 Use a more expensive, but more accurate, method to decide whether
    86 hosts can complete jobs within their delay bound.
     68Use a more expensive, but more accurate, method to decide whether hosts can complete jobs within their delay bound.
    8769
    8870=== Job limits ===
     
    9072<one_result_per_user_per_wu/>
    9173}}}
    92 If set, send at most one instance of a given job to a given user.
    93 This increases the effectiveness of replication-based validation
    94 by making it more difficult for hackers to get all the instances of a given job.
     74If set, send at most one instance of a given job to a given user. This increases the effectiveness of replication-based validation by making it more difficult for hackers to get all the instances of a given job.
     75
    9576{{{
    9677<one_result_per_host_per_wu/>
    9778}}}
    98 If present, send at most one result of a given workunit to a given host.
    99 This is weaker than `one_result_per_user_per_wu`;
    100 it's useful if you're using homogeneous redundancy
    101 and most of the hosts of a particular class belong to a single user.
     79If 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's useful if you're using homogeneous redundancy and most of the hosts of a particular class belong to a single user.
    10280
    10381{{{
    10482<min_sendwork_interval> N </min_sendwork_interval>
    10583}}}
    106 Minimum number of seconds between sending jobs to a given host.
    107 You can use this to limit the impact of faulty hosts.
     84Minimum number of seconds between sending jobs to a given host. You can use this to limit the impact of faulty hosts.
    10885
    10986{{{
     
    11188<max_wus_in_progress_gpu> M </max_wus_in_progress_gpu>
    11289}}}
    113 Limit the number of jobs in progress on a given host
    114 (and thus limit average turnaround time).
    115 Starting with 6.8, the BOINC client report the resources used by in-progress jobs;
    116 in this case, the max CPU jobs in progress is '''N*NCPUS'''
    117 and the max GPU jobs in progress is '''M*NGPUs'''.
    118 Otherwise, the overall maximum is '''N*NCPUS + M*NGPUS)'''.
    119 
    120 See the following section for a more powerful way of expressing
    121 limits on in-progress jobs.
     90Limit the number of jobs in progress on a given host (and thus limit average turnaround time). Starting with 6.8, the BOINC client report the resources used by in-progress jobs; in this case, the max CPU jobs in progress is '''N*NCPUS''' and the max GPU jobs in progress is '''M*NGPUs'''. Otherwise, the overall maximum is '''N*NCPUS + M*NGPUS)'''.
     91
     92See the following section for a more powerful way of expressing limits on in-progress jobs.
    12293
    12394{{{
    12495<gpu_multiplier> GM </gpu_multiplier>
    12596}}}
    126 If your project uses GPUs, set this to roughly the ratio
    127 of GPU speed to CPU speed.
    128 Used in the calculation of job limits (see next 2 items).
     97If your project uses GPUs, set this to roughly the ratio of GPU speed to CPU speed. Used in the calculation of job limits (see next 2 items).
     98
    12999{{{
    130100<max_wus_to_send> N </max_wus_to_send>
    131101}}}
    132 Maximum jobs returned per scheduler RPC is '''N*(NCPUS + GM*NGPUS)'''.
    133 You can use this to limit the impact of faulty hosts.
    134 Default is 10.
     102Maximum jobs returned per scheduler RPC is '''N*(NCPUS + GM*NGPUS)'''. You can use this to limit the impact of faulty hosts. Default is 10.
     103
    135104{{{
    136105<max_ncpus>N</max_ncpus>
    137106}}}
    138 An upper bound on NCPUS (default: 16)
     107An upper bound on NCPUS (default: 64)
    139108
    140109{{{
    141110<daily_result_quota> N </daily_result_quota>
    142111}}}
    143 Each host has a field MRD in the interval [1 .. daily_result_quota];
    144 it's initially daily_result_quota,
    145 and is adjusted as the host sends good or bad results.
    146 The maximum number of jobs sent to a given host in a 24-hour period is
    147 '''MRD*(NCPUS + GM*NGPUS)'''.
    148 You can use this to limit the impact of faulty hosts.
     112Each host has a field MRD in the interval [1 .. daily_result_quota]; it's initially daily_result_quota, and is adjusted as the host sends good or bad results. The maximum number of jobs sent to a given host in a 24-hour period is '''MRD*(NCPUS + GM*NGPUS)'''. You can use this to limit the impact of faulty hosts.
    149113
    150114=== Job limits (advanced) ===
    151 The following is a
    152 more adaptable way of expressing limits on the number of jobs in progress on a host.
    153 You can specify limits for specific apps, and for your projects as a whole.
    154 Within each of these, you can specify limits for CPU jobs, GPU jobs, or total.
    155 In the case of CPU and GPU jobs, you can specify whether the limit should be
    156 scaled by the number of devices present on the host.
    157 
    158 This uses a separate config file, '''config_aux.xml'''.
    159 The syntax is:
     115The following is a more adaptable way of expressing limits on the number of jobs in progress on a host. You can specify limits for specific apps, and for your projects as a whole. Within each of these, you can specify limits for CPU jobs, GPU jobs, or total. In the case of CPU and GPU jobs, you can specify whether the limit should be scaled by the number of devices present on the host.
     116
     117This uses a separate config file, '''config_aux.xml'''. The syntax is:
     118
    160119{{{
    161120<?xml version="1.0" ?>
     
    183142</config>
    184143}}}
    185 
    186144=== Job-cache scheduling ===
    187 
    188 This is the default.
    189 The feeder (a daemon program) maintains a cache of jobs in shared memory.
    190 Instances of the scheduler get jobs from this cache,
    191 reducing their database access overhead.
     145This is the default. The feeder (a daemon program) maintains a cache of jobs in shared memory. Instances of the scheduler get jobs from this cache, reducing their database access overhead.
    192146
    193147{{{
     
    195149}}}
    196150The size of the job cache.  Default is 100 jobs.
     151
    197152{{{
    198153<feeder_query_size>N</feeder_query_size>
     
    201156
    202157=== Matchmaker scheduling ===
    203 
    204 This is a variant of job-cache scheduling.
    205 The job selection policy is determined by a "score function";
    206 this highest-scoring jobs are sent to the client.
     158This is a variant of job-cache scheduling. The job selection policy is determined by a "score function"; this highest-scoring jobs are sent to the client.
    207159
    208160{{{
     
    210162}}}
    211163If set, enable matchmaker scheduling.
     164
    212165{{{
    213166<mm_min_slots>N</mm_min_slots>
    214167<mm_max_slots>N</mm_max_slots>
    215168}}}
    216 Specify the min and max number of jobs to scan for a given client request.
    217 Defaults are 20 and 50.
     169Specify the min and max number of jobs to scan for a given client request. Defaults are 20 and 50.
     170
    218171{{{
    219172<job_size_matching>0|1</job_size_matching>
    220173}}}
    221 If set, include a term in the score function that
    222 favors sending large jobs to fast hosts.
    223 To use this, you must run the census program as a periodic task
    224 to maintain statistics on the distribution of host speeds.
     174If set, include a term in the score function that favors sending large jobs to fast hosts. To use this, you must run the census program as a periodic task to maintain statistics on the distribution of host speeds.
    225175
    226176=== Accelerating retries ===
    227 
    228 The goal of this mechanism (which works with job-cache and matchmaker scheduling,
    229 but not locality scheduling) is to send timeout-generated retries to
    230 hosts that are likely to finish them fast.
    231 Here's how it works:
     177The goal of this mechanism (which works with job-cache and matchmaker scheduling, but not locality scheduling) is to send timeout-generated retries to hosts that are likely to finish them fast. Here's how it works:
     178
    232179 * Hosts are deemed "reliable" (a slight misnomer) if they satisfy turnaround time and error rate criteria.
    233180 * A job instance is deemed "need-reliable" if its priority is above a threshold.
    234  * The scheduler tries to send need-reliable jobs to reliable hosts.
    235    When it does, it reduces the delay bound of the job.
    236  * When job replicas are created in response to errors or timeouts,
    237    their priority is raised relative to the job's base priority.
     181 * The scheduler tries to send need-reliable jobs to reliable hosts. When it does, it reduces the delay bound of the job.
     182 * When job replicas are created in response to errors or timeouts, their priority is raised relative to the job's base priority.
    238183
    239184The configurable parameters are:
     185
    240186{{{
    241187<reliable_on_priority>X</reliable_on_priority>
    242188}}}
    243 Results with priority at least '''reliable_on_priority''' are treated as "need-reliable".
    244 With matchmaker scheduling, they'll be sent preferentially to reliable hosts;
    245 with job-cache scheduling, they'll be sent ONLY to reliable hosts.
     189Results with priority at least '''reliable_on_priority''' are treated as "need-reliable". With matchmaker scheduling, they'll be sent preferentially to reliable hosts; with job-cache scheduling, they'll be sent ONLY to reliable hosts.
    246190
    247191{{{
     
    249193<reliable_max_error_rate>X</reliable_max_error_rate>
    250194}}}
    251 Hosts whose average turnaround is at most reliable_max_avg_turnaround
    252 and whose error rate is at most reliable_max_error_rate are considered 'reliable'.
    253 Make sure you set these low enough that a significant fraction (e.g. 25%) of your hosts qualify.
     195Hosts whose average turnaround is at most reliable_max_avg_turnaround  and whose error rate is at most reliable_max_error_rate are considered 'reliable'. Make sure you set these low enough that a significant fraction (e.g. 25%) of your hosts qualify.
     196
    254197{{{
    255198<reliable_reduced_delay_bound>X</reliable_reduced_delay_bound>
    256199}}}
    257 When a need-reliable result is sent to a reliable host,
    258 multiply the delay bound by '''reliable_reduced_delay_bound''' (typically 0.5 or so).
     200When a need-reliable result is sent to a reliable host, multiply the delay bound by '''reliable_reduced_delay_bound''' (typically 0.5 or so).
     201
    259202{{{
    260203<reliable_priority_on_over>X</reliable_priority_on_over>
    261204<reliable_priority_on_over_except_error>X</reliable_priority_on_over_except_error>
    262205}}}
    263 
    264 If '''reliable_priority_on_over''' is nonzero,
    265 increase the priority of duplicate jobs by that amount over the job's base priority.
    266 Otherwise, if '''reliable_priority_on_over_except_error''' is nonzero,
    267 increase the priority of duplicates caused by timeout (not error) by that amount.
    268 (Typically only one of these is nonzero, and is equal to '''reliable_on_priority'''.)
    269 
    270 NOTE: this mechanism can be used to preferentially send ANY job,
    271 not just retries, to fast/reliable hosts.
    272 To do so, set the workunit's priority to '''reliable_on_priority''' or greater.
     206If '''reliable_priority_on_over''' is nonzero, increase the priority of duplicate jobs by that amount over the job's base priority. Otherwise, if '''reliable_priority_on_over_except_error''' is nonzero, increase the priority of duplicates caused by timeout (not error) by that amount. (Typically only one of these is nonzero, and is equal to '''reliable_on_priority'''.)
     207
     208NOTE: this mechanism can be used to preferentially send ANY job, not just retries, to fast/reliable hosts. To do so, set the workunit's priority to '''reliable_on_priority''' or greater.
    273209
    274210=== Locality scheduling ===
     
    276212<locality_scheduling/>
    277213}}}
    278 When possible, send work that uses the same files that the host already has.
    279 This is intended for projects which have large data files,
    280 where many different workunits use the same data file.
    281 In this case, to reduce download demands on the server,
    282 it may be advantageous to retain the data files on the hosts,
    283 and send them work for the files that they already have. See [LocalityScheduling Locality Scheduling].
     214When 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 [wiki:LocalityScheduling Locality Scheduling].
     215
    284216{{{
    285217<locality_scheduling_wait_period> N </locality_scheduling_wait_period>
    286218}}}
    287 This element only has an effect when used in conjunction with the previous locality scheduling element.
    288 It tells the scheduler to use 'trigger files' to inform the project
    289 that more work is needed for specific files.
    290 The period is the number of seconds which the scheduler will wait to see
    291 if the project can create additional work.
    292 Together with project-specific daemons or scripts this can be used for 'just-in-time' workunit creation.
    293 See [LocalityScheduling Locality Scheduling].
     219This 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 [wiki:LocalityScheduling Locality Scheduling].
    294220
    295221=== Job retransmission ===
     
    297223<resend_lost_results> 0|1 </resend_lost_results>
    298224}}}
    299 If set, and a <other_results> list is present in scheduler request, resend any in-progress results not in the list.
    300 This is recommended; it may increase the efficiency of your project.
    301 For reasons that are not well understood, a BOINC client sometimes fails to receive the scheduler reply.
    302 This flag addresses that issue: it causes the SAME results to be resent by the scheduler,
    303 if the client has failed to receive them.
    304 Note: this will increase the load on your DB server; you can minimize this by creating an index:
     225If 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:
     226
    305227{{{
    306228alter table result add index res_host_state (hostid, server_state);
     
    309231<send_result_abort>0|1</send_result_abort>
    310232}}}
    311 If set, and the client is processing a result for a WU that has been canceled or is not in the DB
    312 (i.e. there's no chance of getting credit), tell the client to abort the result regardless of state.
    313 If client is processing a result for a WU that has been assimilated or is overdue
    314 (i.e. there's a chance of not getting credit) tell the client to abort the result if it hasn't started yet.
    315 Note: this will increase the load on your DB server.
    316 
     233If 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.
    317234
    318235=== Data distribution ===
     
    320237<replace_download_url_by_timezone>URL</replace_download_url_by_timezone>
    321238}}}
    322 OUTDATED: BERND, PLEASE UPDATE.
    323 When the scheduler sends work to hosts,
    324 it replaces the download URL appearing in the data and executable file descriptions
    325 with the download URL closest to the host's timezone.
    326 The project must provide a two-column file called 'download_servers' in the project root directory.
    327 This is a list of all download servers that will be inserted when work is sent to hosts.
    328 The first column is an integer listing the server's offset in seconds from UTC.
    329 The second column is the server URL in the format such as !http://einstein.phys.uwm.edu.
    330 The download servers must have identical file hierarchies and contents,
    331 and the path to file and executables must start with '/download/...'
    332 as in '!http://X/download/123/some_file_name'.
     239OUTDATED: BERND, PLEASE UPDATE. 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'.
     240
    333241{{{
    334242<cache_md5_info> 0|1 </cache_md5_info>
    335243}}}
    336 When creating work, keep a record (in files called foo.md5) of the file length
    337 and md5 sum of data files and executables.
    338 This can greatly reduce the time needed to create work,
    339 if (1) these files are re-used, and (2) there are many of these files,
    340 and (3) reading the files from disk is time-consuming.
     244When 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.
    341245
    342246=== Logging ===
    343 
    344247The contents of the scheduler log file is controlled by the following:
    345248
     
    347250<debug_assignment/>
    348251}}}
    349 Explain the sending of [AssignedWork assigned work].
     252Explain the sending of [wiki:AssignedWork assigned work].
     253
    350254{{{
    351255<debug_edf_sim_detail/>
    352256}}}
    353257Show the details of EDF simulation
     258
    354259{{{
    355260<debug_edf_sim_workload/>
    356261}}}
    357262Show the initial conditions of EDF simulation
     263
    358264{{{
    359265<debug_handle_results/>
    360266}}}
    361267Show the handling of reported jobs.
     268
    362269{{{
    363270<debug_locality>
    364271}}}
    365272Show locality scheduling debugging info.
     273
    366274{{{
    367275<debug_prefs/>
    368276}}}
    369277Show the propagation of global prefs.
     278
    370279{{{
    371280<debug_quota/>
    372281}}}
    373282Show info related to job quotas (per RPC, max in progress, max per day)
     283
    374284{{{
    375285<debug_request_details/>
    376286}}}
    377287Show details of request message.
     288
    378289{{{
    379290<debug_request_headers/>
    380291}}}
    381292Show HTTP request headers.
     293
    382294{{{
    383295<debug_send/>
    384296}}}
    385297Explain the sending of jobs.
     298
    386299{{{
    387300<debug_user_messages/>
    388301}}}
    389302Show messages we're sending to the user.
     303
    390304{{{
    391305<debug_version_select/>
     
    394308
    395309The overall verbosity is controlled by the following:
     310
    396311{{{
    397312<sched_debug_level> N </sched_debug_level>
    398313}}}
    399 Log messages have a "level": 1=minimal, 2=normal, 3=debug.
    400 The messages enabled by the above flags have level=2.
    401 If you set this option to N, only messages of level N or less will be written.
    402 
    403 
     314Log messages have a "level": 1=minimal, 2=normal, 3=debug. The messages enabled by the above flags have level=2. If you set this option to N, only messages of level N or less will be written.
    404315
    405316=== Client control === #client-control
     
    407318<next_rpc_delay>x</next_rpc_delay>
    408319}}}
    409 In each scheduler reply, tell the clients to do another scheduler RPC after at most X seconds,
    410 regardless of whether they need work.
    411 This is useful, e.g., to ensure that in-progress jobs can be canceled in a bounded amount of time.
     320In 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.
     321
    412322{{{
    413323<verify_files_on_app_start/>
    414324}}}
    415 
    416 Before starting or restarting an app,
    417 check contents of input files and app version files by either MD5 or digital signature check.
    418 Detects user tampering with file
    419 (but doesn't really increase security, since user could also change MD5s or signatures in client state file).
     325Before 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).
     326
    420327{{{
    421328<symstore>URL</symstore>
    422329}}}
    423330URL of your project's symbol store, used for debugging Windows applications.
     331
    424332{{{
    425333<min_core_client_version_announced> N </min_core_client_version_announced>
    426334}}}
    427 Announce a new version of the BOINC core client,
    428 which in the future will be the minimum required version.
    429 In conjunction with the next tag,
    430 you can warn users with version below this to upgrade by a specified deadline.
    431 The version number is encoded as 10000*major + 100*minor + release.
     335Announce 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. The version number is encoded as 10000*major + 100*minor + release.
     336
    432337{{{
    433338<min_core_client_upgrade_deadline> N </min_core_client_upgrade_deadline>
    434339}}}
    435 Use in conjunction with the previous tag.
    436 The value given here is the Unix epoch returned by time(2) until which hosts can update their core client.
    437 After this time, they may be shut out of the project.
    438 Before this time, they will receive messages warning them to upgrade.
     340Use 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.
     341
    439342{{{
    440343<msg_to_host/>
    441344}}}
    442345If present, check the msg_to_host table on each RPC, and send the client any messages queued for it.
     346
    443347{{{
    444348<non_cpu_intensive> 0|1 </non_cpu_intensive>
     
    447351
    448352 * The client will download one result at a time.
    449  * This result will be executed whenever computation is enabled (bypassing the normal scheduling mechanism).
    450 
    451 This is intended for [NonCpuIntensive applications that use little CPU time],
    452 e.g. that do network or host measurements.
     353 * This result will be executed whenever computation is enabled (bypassing the normal scheduling mechanism).
     354
     355This is intended for [wiki:NonCpuIntensive applications that use little CPU time], e.g. that do network or host measurements.
    453356
    454357=== Deprecated options ===
    455 
    456358{{{
    457359<no_amd_k6>1</no_amd_k6>
    458360}}}
    459361Don't issue work to clients with AMD K6 processors.  Equivalent to
     362
    460363{{{
    461364<ban_cpu>.*AMD.*\t.*Family 5 Model 8 Stepping 0.*</ban_cpu>
    462365}}}
    463 
    464366== Upload certificates ==
    465367{{{
    466368<dont_generate_upload_certificates/>
    467369}}}
    468 Don't put upload certificates in results.
    469 This makes result generation a lot faster,
    470 since no encryption is done, but you lose protection against DoS attacks on your upload servers.
     370Don'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.
     371
    471372{{{
    472373<ignore_upload_certificates/>
    473374}}}
    474 If upload certificates are not generated,
    475 this option must be enabled to force the file upload handler to accept files.
     375If upload certificates are not generated, this option must be enabled to force the file upload handler to accept files.
    476376
    477377== Default preferences ==
     
    479379<default_disk_max_used_gb> X </default_disk_max_used_gb>
    480380}}}
    481 Sets the default value for the `disk_max_used_gb` preference so it's consistent
    482 between the scheduler and web pages.
    483 The scheduler uses it when a request for work doesn't include preferences,
    484 or the preference is set to zero.
    485 The web page scripts use it to set the initial value when displaying or editing preferences the first time,
    486 or when the user never saved them.
    487 Default is 100.
     381Sets 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.
     382
    488383{{{
    489384<default_disk_max_used_pct> X </default_disk_max_used_pct>
    490385}}}
    491 Sets the default value for the `disk_max_used_pct` preference so its consistent
    492 between the scheduler and web pages.
    493 The scheduler uses it when a request for work doesn't include preferences,
    494 or the preference is set to zero.
    495 The web page scripts use it to set the initial value when displaying
    496 or editing preferences the first time,
    497 or when the user never saved them. Default is 50.
     386Sets 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.
     387
    498388{{{
    499389<default_disk_min_free_gb> X </default_disk_min_free_gb>
    500390}}}
    501 Sets the default value for the `disk_min_free_gb` preference so its consistent
    502 between the scheduler and web pages.
    503 The scheduler uses it when a request for work doesn't include preferences.
    504 The web page scripts use it to set the initial value when displaying or editing preferences the first time,
    505 or when the user never saved them.
    506 Also, the scheduler uses this setting to override any smaller preference from the host,
    507 it enforces a 'minimum free disk space' to keep from filling up the drive.
    508 Recommend setting this no smaller than .001 (1MB or 1,000,000 bytes). Default is .001.
    509 
     391Sets 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.
    510392
    511393== Credit ==
    512 (See also the command-line options of the [ValidationIntro validator]).
     394(See also the command-line options of the [wiki:ValidationIntro validator]).
     395
    513396{{{
    514397<granted_credit_weight>X</granted_credit_weight>
     
    520403<fp_benchmark_weight> X </fp_benchmark_weight>
    521404}}}
    522 The weighting given to the Whetstone benchmark in the calculation of claimed credit.
    523 Must be in [0 .. 1]. Projects whose applications are floating-point intensive should use 1; pure integer applications, 0.
    524 Choosing an appropriate value will reduce the disparity in claimed credit between hosts.
    525 The script html/ops/credit_study.php, run against the database of a running project, will suggest what value to use.
     405The 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.
     406
    526407{{{
    527408<granted_credit_weight>X</granted_credit_weight>
     
    533414<delete_delay_hours>X</delete_delay_hours>
    534415}}}
    535 Wait X hours before deleting files.
    536 This provides a 'grace period' during which late results will still get credit.
     416Wait X hours before deleting files. This provides a 'grace period' during which late results will still get credit.
     417
    537418{{{
    538419<httpd_user>username</httpd_user>
    539420}}}
    540 The user name under which the web server runs.
    541 As a safeguard, the file deleter skips files not owned by this user.
     421The user name under which the web server runs. As a safeguard, the file deleter skips files not owned by this user.
    542422
    543423== Server status page options == #server-status
     
    546426}}}
    547427Host name of web server.
     428
    548429{{{
    549430<sched_host>hostname</sched_host>
    550431}}}
    551432Host name of scheduling server.
     433
    552434{{{
    553435<uldl_host>hostname</uldl_host>
    554436}}}
    555437Host name of upload/download server.
     438
    556439{{{
    557440<uldl_pid>path</uldl_pid>
    558441}}}
    559442pid file of upload/download server (default: `/etc/httpd/run/httpd.pid`).
     443
    560444{{{
    561445<ssh_exe>path</ssh_exe>
    562446}}}
    563447path to `ssh` (default: `/usr/bin/ssh`).
     448
    564449{{{
    565450<ps_exe>path</ps_exe>
     
    567452path to `ps` (which supports "w" flag) (default: `/bin/ps`).
    568453
    569 
    570454== Web site features == #website
    571455{{{
     
    573457}}}
    574458If present, don't show profile pictures until they've been screened and approved by project admins.
     459
    575460{{{
    576461<show_results/>
    577462}}}
    578463Enable web site features that show results (per user, host, etc.).
     464
    579465{{{
    580466<dont_suppress_pending/>
    581467}}}
    582468Do not hide incomplete results when using adaptive replication.
     469
    583470{{{
    584471<no_forum_rating/>
    585472}}}
    586473Disable forum post rating.
     474
    587475{{{
    588476<no_web_account_creation/>
    589477}}}
    590478Don't allow account creation via the web.
     479
    591480{{{
    592481<akismet_key> 1234567890ab </akismet_key>
    593482}}}
    594 If set, akismet.com is used to check post contents to protect forums from spam.
    595 See [ProtectionFromSpam Protecting message boards from spam] for more information.
     483If set, akismet.com is used to check post contents to protect forums from spam. See [wiki:ProtectionFromSpam Protecting message boards from spam] for more information.
     484
    596485{{{
    597486<users_per_page>N</users_per_page>
    598487}}}
    599488Number of entries per page for top users/teams/hosts.  Default is 20.
     489
    600490{{{
    601491<teams_per_page>N</teams_per_page>
     
    608498<recaptcha_private_key>X</recaptcha_private_key>
    609499}}}
    610 Enable the use of Recaptcha for profile creation/editing;
    611 see [ProtectionFromSpam Protecting message boards from spam] for more information.
     500Enable the use of Recaptcha for profile creation/editing; see [wiki:ProtectionFromSpam Protecting message boards from spam] for more information.
     501
    612502{{{
    613503<profile_min_credit>X</profile_min_credit>
    614504}}}
    615505The minimum amount of credit to create or edit a profile.
     506
    616507{{{
    617508<team_forums_members_only>0|1</team_forums_members_only>
    618509}}}
    619510If set, team message boards are visible only to team members.
     511
    620512{{{
    621513<moderators_vote_to_ban>0|1</moderators_vote_to_ban>
    622514}}}
    623515If set, banishments require a majority vote among moderators.
     516
    624517{{{
    625518<no_computing>0|1</no_computing>
    626519}}}
    627 If set, web pages have no references to computing (tasks, credit etc.).
    628 For projects that are using Bossa or Bolt.
     520If set, web pages have no references to computing (tasks, credit etc.). For projects that are using Bossa or Bolt.
    629521
    630522== Miscellaneous == #misc
     
    632524<min_core_client_version> N </min_core_client_version>
    633525}}}
    634 If the scheduler gets a request from a client with a version number less than this,
    635 it returns an error message and doesn't do any other processing.
    636 The version number is expressed as an integer with the encoding 10000*major + 100*minor + release.
    637 You can also specify this separately for each [AppVersion application].
     526If 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 10000*major + 100*minor + release. You can also specify this separately for each [wiki:AppVersion application].
     527
    638528{{{
    639529<ended>0|1</ended>
    640530}}}
    641531Project has permanently ended.  Tell clients so user can be notified.
     532
    642533{{{
    643534<disable_account_creation/>
    644535}}}
    645536If present, disallow account creation.
     537
    646538{{{
    647539<min_passwd_length> N </min_passwd_length>
    648540}}}
    649541Minimum length of user passwords. Default is 6.
     542
    650543{{{
    651544<request_time_stats_log/>
    652545}}}
    653 If present, the scheduler will tell clients (via scheduler replies) to
    654 upload (via scheduler requests) their time stats log
    655 (which contains records of when the client started and stopped running).
     546If present, the scheduler will tell clients (via scheduler replies) to upload (via scheduler requests) their time stats log (which contains records of when the client started and stopped running).
     547
    656548{{{
    657549<fuh_debug_level> N </fuh_debug_level>
    658550}}}
    659551Verbosity level for file upload handler log output. 1=minimal, 2=normal (default), 3=verbose.
     552
    660553{{{
    661554<dont_store_success_stderr/>
    662555}}}
    663 If present, don't store the stderr log in the database for successful workunits.
    664 May be useful to save on database size. Available since r18528.
     556If present, don't store the stderr log in the database for successful workunits. May be useful to save on database size. Available since r18528.
    665557
    666558== Database info == #db
     
    679571[ <replica_db_passwd>database_password</replica_db_passwd> ]
    680572}}}
    681 Description a replica database server, which is used for read-only queries (optional).
    682 NOTE: according to Bernd Machenschalk,
    683 using a separate user account with read-only access to the replica
    684 increases the apparent consistency between main and replica.
     573Description a replica database server, which is used for read-only queries (optional). NOTE: according to Bernd Machenschalk, using a separate user account with read-only access to the replica increases the apparent consistency between main and replica.
    685574
    686575== Hosts, directories, and URLs == #dirs
    687 
    688 (These are created by [MakeProject make_project]; normally you don't need to change them.)
     576(These are created by [wiki:MakeProject make_project]; normally you don't need to change them.)
     577
    689578{{{
    690579<master_url>URL</master_url>
     
    696585<host>hostname</host>
    697586}}}
    698 name of project's main host, as given by Python's `socket.hostname()`.
    699 Daemons and tasks run on this host by default.
    700 
     587name of project's main host, as given by Python's `socket.hostname()`. Daemons and tasks run on this host by default.
    701588
    702589{{{
     
    704591}}}
    705592ID of scheduler shared memory. Must be unique on host.
     593
    706594{{{
    707595<download_url>URL</download_url>
    708596}}}
    709597URL of data server for download.
     598
    710599{{{
    711600<download_dir>path</download_dir>
    712601}}}
    713602absolute path of download directory.
     603
    714604{{{
    715605<uldl_dir_fanout>N</uldl_dir_fanout>
    716606}}}
    717 fan-out factor of upload and download directories
    718 (see [DirHierarchy Hierarchical upload/download directories]).
     607fan-out factor of upload and download directories (see [wiki:DirHierarchy Hierarchical upload/download directories]).
     608
    719609{{{
    720610<upload_url>URL</upload_url>
    721611}}}
    722612URL of file upload handler.
     613
    723614{{{
    724615<upload_dir>path</upload_dir>
    725616}}}
    726617absolute path of upload directory.
     618
    727619{{{
    728620<cgi_url>URL</cgi_url>
    729621}}}
    730622URL of scheduler.
     623
    731624{{{
    732625<log_dir>path</log_dir>
    733626}}}
    734627absolute path of logfile directory.
     628
    735629{{{
    736630<bin_dir>relative-path</bin_dir>      <!-- relative to project_dir -->
     
    742636<sched_lockfile_dir>path</sched_lockfile_dir>
    743637}}}
    744 Enables scheduler locking (recommended) and specifies directory where scheduler lockfiles are stored.
    745 Must be writable to the Apache user.
     638Enables scheduler locking (recommended) and specifies directory where scheduler lockfiles are stored. Must be writable to the Apache user.
    746639
    747640= Parsing project options = #parsing-config
    748 
    749641A program or script can access project options as follows:
    750642
     
    752644 * PHP: use the get_config() and parse_config() functions in inc/util.inc
    753645 * scripts: use the bin/parse_config program
    754