Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
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.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/gitlab/memory/watchdog/monitor/rss_memory_limit.rb b/lib/gitlab/memory/watchdog/monitor/rss_memory_limit.rb
new file mode 100644
index 00000000000..3e7de024630
--- /dev/null
+++ b/lib/gitlab/memory/watchdog/monitor/rss_memory_limit.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Memory
+ class Watchdog
+ module Monitor
+ class RssMemoryLimit
+ attr_reader :memory_limit
+
+ def initialize(memory_limit:)
+ @memory_limit = memory_limit
+ end
+
+ def call
+ worker_rss = Gitlab::Metrics::System.memory_usage_rss[:total]
+
+ return { threshold_violated: false, payload: {} } if worker_rss <= memory_limit
+
+ { threshold_violated: true, payload: payload(worker_rss, memory_limit) }
+ end
+
+ private
+
+ def payload(worker_rss, memory_limit)
+ {
+ message: 'rss memory limit exceeded',
+ memwd_rss_bytes: worker_rss,
+ memwd_max_rss_bytes: memory_limit
+ }
+ end
+ end
+ end
+ end
+ end
+end