Changes between Version 1 and Version 2 of RpcPolicy


Ignore:
Timestamp:
Apr 25, 2007, 2:19:15 PM (17 years ago)
Author:
Nicolas
Comment:

Required manual changes to automatic conversion. NOTE: is there high-water mark and those things on current versions?

Legend:

Unmodified
Added
Removed
Modified
  • RpcPolicy

    v1 v2  
    55The scheduler RPC policy has the following goals:
    66
    7 
    87 * Make as few scheduler RPCs as possible.
    98 * Use random exponential backoff if a project's scheduling servers are down (i.e. delay by a random number times 2^N, where N is the number of unsuccessful attempts). This avoids an RPC storm when the servers come back up.
     
    1110 * Report results before or soon after their deadlines.
    1211
     12== Resource debt ==
    1313
    14 === Resource debt ===
    15   The client maintains an exponentially-averaged sum of the CPU time it has devoted to each project. The constant EXP_DECAY_RATE determines the decay rate (currently a factor of e every week).
     14The client maintains an exponentially-averaged sum of the CPU time it has devoted to each project. The constant EXP_DECAY_RATE determines the decay rate (currently a factor of e every week).
    1615
    1716Each project is assigned a '''resource debt''', computed as
    18 
     17{{{
    1918resource_debt = resource_share / exp_avg_cpu
    20 
     19}}}
    2120where 'exp_avg_cpu' is the CPU time used recently by the project (exponentially averaged). Resource debt is a measure of how much work the client owes the project, and in general the project with the greatest resource debt is the one from which work should be requested.
    2221
     22== Minimum RPC time ==
     23The client maintains a '''minimum RPC time''' for each project. This is the earliest time at which a scheduling RPC should be done to that project (if zero, an RPC can be done immediately). The minimum RPC time can be set for various reasons:
    2324
    24 === Minimum RPC time ===
    25   The client maintains a '''minimum RPC time''' for each project. This is the earliest time at which a scheduling RPC should be done to that project (if zero, an RPC can be done immediately). The minimum RPC time can be set for various reasons:
    26 
    27 
    28  * Because of a request from the project, i.e. a <request_delay> element in a scheduler reply message.
     25 * Because of a request from the project, i.e. a `<request_delay>` element in a scheduler reply message.
    2926 * Because RPCs to all of the project's scheduler have failed. An exponential backoff policy is used.
    3027 * Because one of the project's computations has failed (the application crashed, or a file upload or download failed). An exponential backoff policy is used to prevent a cycle of rapid failures.
    3128
    32 
    33 === Scheduler RPC sessions ===
    34   Communication with schedulers is organized into '''sessions''', each of which may involve many RPCs. There are two types of sessions:
    35 
     29== Scheduler RPC sessions ==
     30Communication with schedulers is organized into '''sessions''', each of which may involve many RPCs. There are two types of sessions:
    3631
    3732 * '''Get-work''' sessions, whose goal is to get a certain amount of work. Results may be reported as a side-effect.
    3833 * '''Report-result''' sessions, whose goal is to report results. Work may be fetched as a side-effect.
    3934
    40  The internal logic of scheduler sessions is encapsulated in the class SCHEDULER_OP. This is implemented as a state machine, but its logic expressed as a process might look like:
     35The internal logic of scheduler sessions is encapsulated in the class SCHEDULER_OP. This is implemented as a state machine, but its logic expressed as a process might look like:
    4136{{{
    4237get_work_session() {
     
    7469}
    7570}}}
    76  The logic for initiating scheduler sessions is embodied in the [ClientLogic scheduler_rpcs->poll()] function.
     71The logic for initiating scheduler sessions is embodied in the [ClientLogic scheduler_rpcs->poll()] function.
    7772{{{
    7873if a scheduler RPC session is not active