anchor.diff:      %% start re-registration
       lists:foreach(fun({Node, FromName, _ToName}) ->
           Pids = maps:get(Node, PidsMap),
  -        rpc:cast(Node, ?MODULE, register_on_node, [CollectorPid, FromName, Pids])
  +        rpc:cast(Node, ?MODULE, register_on_node, [CollectorPid, WorkersPerNode, FromName, Pids])
       end, NodesInfo),
   
       %% wait
  
positive.code: 
      %% start unregistration
      lists:foreach(fun({Node, FromName, ToName}) ->
          rpc:cast(Node, ?MODULE, unregister_on_node, [CollectorPid, FromName, ToName])
      end, NodesInfo),
  
      %% wait
  
negative.code: %% API
  %% ===================================================================
  
  %% example run: `PROCESS_COUNT=100000 WORKERS_PER_NODE=100 NODES_COUNT=2 make bench`
  start() ->
      %% init
      SlavesCount = list_to_integer(os:getenv("NODES_COUNT", "1")),
      WorkersPerNode = list_to_integer(os:getenv("WORKERS_PER_NODE", "100")),
      ProcessCount = list_to_integer(os:getenv("PROCESS_COUNT", "100000")),
  
      ProcessesPerNode = round(ProcessCount / SlavesCount),
  
      io:format("-----> Starting benchmark~n"),
      io:format("       --> Nodes: ~w (~w slaves)~n", [SlavesCount + 1, SlavesCount]),
      io:format("       --> Total processes: ~w (~w / slave node)~n", [ProcessCount, ProcessesPerNode]),
      io:format("       --> Workers per node: ~w~n~n", [WorkersPerNode]),
  
      %% start nodes
      NodesInfo = lists:foldl(fun(I, Acc) ->
  