anchor.diff:                 {total_memory, TotalMemory}] ->
                     FreeMemory / TotalMemory * 100
             end,
  -    TotalReductions = get_reductions(),
  -    Reductions = TotalReductions - get_last_reductions(),
  -    set_last_reductions(TotalReductions),
  +    {NewReductions, NewTimestamp} = get_reductions(),
  +    {OldReductions, OldTimestamp} = get_last_reductions(),
  +    TimeDiff = timer:now_diff(NewTimestamp, OldTimestamp) div 1000000,
  +    ReductionsPerSec = (NewReductions - OldReductions) div TimeDiff,
  +    set_last_reductions(NewReductions, NewTimestamp),
       monitor:client_monitor_set_value(lb_active, cpu, fun(Old) -> rrd:add_now(CPU, Old) end),
       monitor:client_monitor_set_value(lb_active, mem, fun(Old) -> rrd:add_now(MEM, Old) end),
  -    monitor:monitor_set_value(lb_active, reductions, fun(Old) -> rrd:add_now(Reductions, Old) end).
  +    monitor:monitor_set_value(lb_active, reductions, fun(Old) -> rrd:add_now(ReductionsPerSec, Old) end).
   
   -compile({inline, [init_db_rrd/1]}).
   %% @doc Called by dht node process to initialize the db monitors
  
positive.code:     end.
  
  %% @doc get the reductions of all processes in the pid group
  -spec get_reductions() -> non_neg_integer().
  get_reductions() ->
      MyGroupPids = pid_groups:my_members(),
      AllReductions =
  
negative.code:             _ = application:start(sasl),   %% required by os_mon.
              _ = application:start(os_mon), %% for monitoring cpu and memory usage.
              _ = cpu_sup:util(), %% throw away first util value
              {InitialReductions, Timestamp} = get_reductions(),
              set_last_reductions(InitialReductions, Timestamp),
              Resolution = config:read(lb_active_monitor_resolution),
              % only store newest value in rrd, monitor stores more values
              RRD = rrd:create(Resolution * 1000, 1, gauge),
  