Background
I have an app that checks the machine’s memory usage using :memsup.get_memory_data/0 before proceeding with an operation. If said memory usage is too high, I just refuse to do the operation.
Problem
Now, according to the documentation, :memsup.get_memory_data
asks the machine how much memory it has allocated every X time. By default X is 60 minutes. This is wwaaaayyy too long.
There is a way to configure it using :memsup.set_check_interval/1 but the new interval I pass only takes effect after the first check, so it means that if I start the app and then use :memsup.set_check_interval(1)
to check the memory every minute, I will have to wait 60 minutes before I start checking the memory every minute like I want. What’s even worst, is that if the application or process is restarted, I go back to waiting 60 minutes again because any changes using this function are not persisted.
Code
So in order to use :memsup
you need to include os_mon
into your extra_applications
mix.exs file:
def application do
[
extra_applications: [:logger, :runtime_tools, :os_mon],
mod: {MyApp.Application, []}
]
end
However, this doesn’t tell me how I can configure the os_mon
app, and reading the erlang documentation lead me to this config page which only confused me further.
I was hopping to see something simple, like changing my config.exs
file but I found no information regarding it.
Question
How do I configure os_mon
on startup, so its memory check interval is 1 minute instead of 60?