anchor.diff:  -export([start_link/1, init/1, on/2, check_config/0]).
   
   -record(state,
  -        {round   = 0                         :: non_neg_integer(),
  +        {id      = ?required(state, id)      :: util:global_uid(),
            perf_rr = ?required(state, perf_rr) :: rrd:rrd(),
            perf_lh = ?required(state, perf_lh) :: rrd:rrd()
           }).
  
positive.code:     {bench} |
      {propagate} |
      {get_node_details_response, node_details:node_details()} |
      {gather_stats, SourcePid::comm:mypid(), Round::pos_integer()} |
      {{get_rrds_response, [{Process::atom(), Key::string(), DB::rrd:rrd() | undefined}]}, {SourcePid::comm:mypid(), Round::pos_integer()}} |
      {gather_stats_response, Round::pos_integer(), [{Process::atom(), Key::string(), Data::rrd:timing_type(number())}]} |
      {report_value, StatsOneRound::#state{}} |
      {get_rrds, [{Process::atom(), Key::string()},...], SourcePid::comm:mypid()}.
  
  
negative.code:     msg_delay:send_local(FirstDelay, self(), {bench}),
      msg_delay:send_local(get_gather_interval(), self(), {propagate}),
      Now = os:timestamp(),
      State = #state{id = util:get_global_uid(),
                     perf_rr = rrd:create(get_gather_interval() * 1000000, 60, {timing, ms}, Now),
                     perf_lh = rrd:create(get_gather_interval() * 1000000, 60, {timing, count}, Now)},
      {State, State}.
  
  