Optimise `gitlab-exporter` running settings
This issue is to talk about optimising running configuration of GitLab Exporter.
Specifically we will look at `jemalloc` and tune it, as well as Ruby GC specific settings.
### Final results
All the improvements are merged. Here is a before-after comparison. Approach: using default settings for gitlab-exporter, boot a fresh Omnibus container and run `ab -c 2 -n 20 localhost:9168/metrics` which polls all available probes. This was running webrick. I then took memory measurements via `smem`.
#### Omnibus 13.8.1-ee.0
```
root@local:/# smem -P gitlab-exporter
PID User Command Swap USS PSS RSS
725 git /opt/gitlab/embedded/bin/ru 0 106864 107404 116596
```
#### Omnibus 13.9.202102010906-fda844058cc.738441f3bc2 (`jemalloc` tweaks only)
```
root@local:/# smem -P gitlab-exporter
PID User Command Swap USS PSS RSS
4548 git /opt/gitlab/embedded/bin/ru 0 34376 34986 45248
```
#### Omnibus 13.9.202102010906-fda844058cc.738441f3bc2 (`jemalloc` tweaks + `RUBY_GC_*` tweaks)
The `RUBY_GC_*` settings were manually applied and are *not* defaults yet.
```
RUBY_GC_HEAP_INIT_SLOTS=80000
RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO=0.055 # 5k/90k
RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO=0.111 # 10k/90k
```
```
root@local:/# smem -P gitlab-exporter
PID User Command Swap USS PSS RSS
1286 git /opt/gitlab/embedded/bin/ru 0 38056 38731 49120
```
#### Result
The improvement is anywhere between **57%-61% reduction in memory use (~67-71MB).** With GC tuning applied, memory use is slightly higher even, but could potentially be less spiky over time. I took a one-time measurement after the test suite finished.
If we ship things "as is", then outcome 2 would apply, i.e. jemalloc is used, but Ruby GC would use defaults.
issue