Fl4m3Ph03n1x
How to configure extra_application in elixir?
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?
Marked As Solved
peerreynders
Don’t know.
As far as I can tell sys.config would need something like
{os_mon, [{memory_check_interval, 5}]}
So according to this
config :os_mon,
memory_check_interval: 5
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/1 takes minutes but get_check_interval/0 returns ms is confusing.
Popular in Questions
Other popular 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
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








