Module lb_active_karger

Implementation of Karger and Ruhl's item balancing load balancing algorithm.

Copyright © 2013-2015 Zuse Institute Berlin

Version: $Id$

Behaviours: lb_active_beh.

Authors: Maximilian Michels (michels@zib.de).

References

Description

Implementation of Karger and Ruhl's item balancing load balancing algorithm. Modified to sample N nodes and use gossip information.

Data Types

dht_message()

dht_message() = {lb_active,
                 phase1,
                 NodeX :: lb_info:lb_info(),
                 options()}
              | {lb_active,
                 phase2,
                 HeavyNode :: lb_info:lb_info(),
                 LightNode :: lb_info:lb_info()}

my_message()

my_message() = {lb_active_karger_trigger}
             | {cy_cache, [node:node_type()]}
             | {my_dht_response,
                DhtNode :: comm:mypid(),
                {get_state_response, Load :: number()}}
             | dht_node_move:result_message()
             | {simulation_result,
                Id :: integer(),
                ReqId :: integer(),
                {items | requests,
                 LoadChange :: non_neg_integer()}}
             | {pick_best_candidate, Id :: integer()}

options()

options() = 
    [{epsilon, float()} |
     {id, integer()} |
     {simulate} |
     {reply_to, comm:mypid()}]

state()

state() = 
    #state{epsilon = float(),
           rnd_node = [node:node_type()],
           best_candidate =
               [{items | requests,
                 {LoadChange :: non_neg_integer(),
                  node:node_type()}}],
           round_id = non_neg_integer() | nil,
           my_lb_info = lb_info:lb_info() | nil,
           req_ids = [{integer(), node:node_type()}]}

Function Index

check_config/0
get_web_debug_kv/1Key/Value List for web debug.
handle_dht_msg/2
handle_msg/2
init/0Initialization of module called by lb_active.

Function Details

init/0

init() -> state()

Initialization of module called by lb_active

handle_msg/2

handle_msg(X1 :: my_message(), State :: state()) -> state()

handle_dht_msg/2

handle_dht_msg(X1 :: dht_message(),
               DhtState :: dht_node_state:state()) ->
                  dht_node_state:state()

get_web_debug_kv/1

get_web_debug_kv(State :: state()) -> [{string(), string()}]

Key/Value List for web debug

check_config/0

check_config() -> boolean()


Generated by EDoc, Sep 11 2020, 15:25:15.