Disable busy waits in the default OTP vm.args
configuration.
This vastly reduces idle CPU usage, which should generally be beneficial for most small-to-medium sized instances. Additionally update the documentation to specify how to override the vm.args file for OTP installs
This commit is contained in:
parent
755c75d8a4
commit
7a0e27a746
2 changed files with 12 additions and 1 deletions
|
@ -25,11 +25,14 @@ Tuning the BEAM requires you provide a config file normally called [vm.args](htt
|
||||||
|
|
||||||
`ExecStart=/usr/bin/elixir --erl '-args_file /opt/akkoma/config/vm.args' -S /usr/bin/mix phx.server`
|
`ExecStart=/usr/bin/elixir --erl '-args_file /opt/akkoma/config/vm.args' -S /usr/bin/mix phx.server`
|
||||||
|
|
||||||
|
If using an OTP release, set the `RELEASE_VM_ARGS` environment variable to the path to the vm.args file.
|
||||||
|
|
||||||
Check your OS documentation to adopt a similar strategy on other platforms.
|
Check your OS documentation to adopt a similar strategy on other platforms.
|
||||||
|
|
||||||
### Virtual Machine and/or few CPU cores
|
### Virtual Machine and/or few CPU cores
|
||||||
|
|
||||||
Disable the busy-waiting. This should generally only be done if you're on a platform that does burst scheduling, like AWS.
|
Disable the busy-waiting. This should generally be done if you're on a platform that does burst scheduling, like AWS, or if you're running other
|
||||||
|
services on the same machine.
|
||||||
|
|
||||||
**vm.args:**
|
**vm.args:**
|
||||||
|
|
||||||
|
@ -39,6 +42,8 @@ Disable the busy-waiting. This should generally only be done if you're on a plat
|
||||||
+sbwtdio none
|
+sbwtdio none
|
||||||
```
|
```
|
||||||
|
|
||||||
|
These settings are enabled by default for OTP releases
|
||||||
|
|
||||||
### Dedicated Hardware
|
### Dedicated Hardware
|
||||||
|
|
||||||
Enable more busy waiting, increase the internal maximum limit of BEAM processes and ports. You can use this if you run on dedicated hardware, but it is not necessary.
|
Enable more busy waiting, increase the internal maximum limit of BEAM processes and ports. You can use this if you run on dedicated hardware, but it is not necessary.
|
||||||
|
|
|
@ -9,3 +9,9 @@
|
||||||
|
|
||||||
## Tweak GC to run more often
|
## Tweak GC to run more often
|
||||||
##-env ERL_FULLSWEEP_AFTER 10
|
##-env ERL_FULLSWEEP_AFTER 10
|
||||||
|
|
||||||
|
## Disable busy waits; vastly reduces CPU usage while idle
|
||||||
|
## See https://docs.akkoma.dev/stable/configuration/optimisation/optimizing_beam/#virtual-machine-andor-few-cpu-cores
|
||||||
|
+sbwt none
|
||||||
|
+sbwtdcpu none
|
||||||
|
+sbwtdio none
|
||||||
|
|
Loading…
Reference in a new issue