summaryrefslogtreecommitdiff
path: root/lib/gitlab/memory/watchdog/monitor/rss_memory_limit.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/memory/watchdog/monitor/rss_memory_limit.rb')
-rw-r--r--lib/gitlab/memory/watchdog/monitor/rss_memory_limit.rb27
1 files changed, 18 insertions, 9 deletions
diff --git a/lib/gitlab/memory/watchdog/monitor/rss_memory_limit.rb b/lib/gitlab/memory/watchdog/monitor/rss_memory_limit.rb
index 3e7de024630..ac71592294c 100644
--- a/lib/gitlab/memory/watchdog/monitor/rss_memory_limit.rb
+++ b/lib/gitlab/memory/watchdog/monitor/rss_memory_limit.rb
@@ -5,29 +5,38 @@ module Gitlab
class Watchdog
module Monitor
class RssMemoryLimit
- attr_reader :memory_limit
+ attr_reader :memory_limit_bytes
- def initialize(memory_limit:)
- @memory_limit = memory_limit
+ def initialize(memory_limit_bytes:)
+ @memory_limit_bytes = memory_limit_bytes
+ init_memory_limit_metrics
end
def call
- worker_rss = Gitlab::Metrics::System.memory_usage_rss[:total]
+ worker_rss_bytes = Gitlab::Metrics::System.memory_usage_rss[:total]
- return { threshold_violated: false, payload: {} } if worker_rss <= memory_limit
+ return { threshold_violated: false, payload: {} } if worker_rss_bytes <= memory_limit_bytes
- { threshold_violated: true, payload: payload(worker_rss, memory_limit) }
+ { threshold_violated: true, payload: payload(worker_rss_bytes, memory_limit_bytes) }
end
private
- def payload(worker_rss, memory_limit)
+ def payload(worker_rss_bytes, memory_limit_bytes)
{
message: 'rss memory limit exceeded',
- memwd_rss_bytes: worker_rss,
- memwd_max_rss_bytes: memory_limit
+ memwd_rss_bytes: worker_rss_bytes,
+ memwd_max_rss_bytes: memory_limit_bytes
}
end
+
+ def init_memory_limit_metrics
+ rss_memory_limit = Gitlab::Metrics.gauge(
+ :gitlab_memwd_max_memory_limit,
+ 'The configured fixed limit for rss memory'
+ )
+ rss_memory_limit.set({}, memory_limit_bytes)
+ end
end
end
end