anchor.diff:      {{datastore_worker, early_init}, {datastore, ensure_state_loaded, []}},
       {{datastore_worker, init}, {datastore, cluster_initialized, []}}
   ]).
  +
  +-define(LOG_MONITORING_STATS(Format, Data),
  +    file:write_file("/tmp/node_manager_monitoring.txt",
  +        io_lib:format("~n~p: " ++ Format, [calendar:local_time() | Data]),
  +        [append])).
   
   %% API
   -export([start_link/0, stop/0, get_ip_address/0, refresh_ip_address/0,
  
positive.code:             ((MemInt >= MemThreshold) orelse (PNum >= ProcThreshold) orelse (MemUsage >= MemToStartCleaning))) of
          true ->
              spawn(fun() ->
                  ?info("Monitoring state: ~p", [MonState]),
                  ?info("Erlang ets mem usage: ~p", [
                      lists:reverse(lists:sort(lists:map(fun(N) ->
                          {ets:info(N, memory), ets:info(N, size), N} end, ets:all())))
                  ]),
  
negative.code:                             erlang:process_info(P, stack_size), erlang:process_info(P, heap_size),
                              erlang:process_info(P, total_heap_size), P, GetName(P)}
                      end, lists:sublist(SortedProcs, 5)),
                  ?LOG_MONITORING_STATS("Erlang Procs stats:~n procs num: ~p~n single proc memory cosumption: ~p~n "
                  "aggregated memory consumption: ~p~n simmilar procs: ~p", [length(Procs),
                      TopProcesses, MergedStacks, MergedStacks2
                  ]),
  
                  ?LOG_MONITORING_STATS("Schedulers basic info: all: ~p, online: ~p",
                      [erlang:system_info(schedulers), erlang:system_info(schedulers_online)]),
                  NewSchedulerInfo0 = erlang:statistics(scheduler_wall_time),
                  case is_list(NewSchedulerInfo0) of
  