feat: Add memory metrics for OnDemand fetchers (#10425)

vb-fix-base-instance-errors
Qwerty5Uiop 4 months ago committed by GitHub
parent 81256f3981
commit f8f6c78c7c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 11
      apps/indexer/lib/indexer/memory/monitor.ex

@ -208,7 +208,7 @@ defmodule Indexer.Memory.Monitor do
@megabytes_divisor 2 ** 20 @megabytes_divisor 2 ** 20
defp set_metrics(%__MODULE__{shrinkable_set: shrinkable_set}) do defp set_metrics(%__MODULE__{shrinkable_set: shrinkable_set}) do
total_memory = total_memory =
Enum.reduce(shrinkable_set, 0, fn pid, acc -> Enum.reduce(shrinkable_set ++ on_demand_fetchers(), 0, fn pid, acc ->
memory = memory(pid) / @megabytes_divisor memory = memory(pid) / @megabytes_divisor
name = name(pid) name = name(pid)
@ -220,6 +220,15 @@ defmodule Indexer.Memory.Monitor do
Instrumenter.set_memory_consumed(:total, total_memory) Instrumenter.set_memory_consumed(:total, total_memory)
end end
defp on_demand_fetchers do
Enum.flat_map([Indexer.Application, Indexer.Supervisor, Explorer.Supervisor], fn supervisor ->
supervisor
|> Supervisor.which_children()
|> Enum.filter(fn {name, _, _, _} -> is_atom(name) and String.contains?(to_string(name), "OnDemand") end)
|> Enum.map(fn {_, pid, _, _} -> pid end)
end)
end
defp name(pid) do defp name(pid) do
case Process.info(pid, :registered_name) do case Process.info(pid, :registered_name) do
{:registered_name, name} when is_atom(name) -> {:registered_name, name} when is_atom(name) ->

Loading…
Cancel
Save