Fl4m3Ph03n1x
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?
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #phoenix_html
- #iex
- #graphql
- #ai
- #genstage
- #elixirconf-us
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex











First 3 of 3 Posts
peerreynders
The documentation states that the default is 1 minute (60000 ms). Is that incorrect?
Fl4m3Ph03n1x
Oops, you are correct. This a a confusion from my part. Turns out I forgot that
memsup.get_check_interval/0which returns in ms:Converts to minutes like the following:
:memsup.get_check_interval() /1000 / 60. I had forgotten the/60part, my bad.Still, now I have to know. How would I configure this in my
mix.exs(lets say I want every 5 minutes)?peerreynders
Don’t know.
As far as I can tell
sys.configwould need something likeSo according to this
via the
config.exs(or any file it references).At least that would be my starting point …
In any case - the fact that
set_check_interval/1takes minutes butget_check_interval/0returns ms is confusing.