From 6eb1fb455e079f6965e04a7fc7228f20c5361ade Mon Sep 17 00:00:00 2001 From: Tristan Wilson Date: Wed, 27 Sep 2023 11:03:52 -0700 Subject: [PATCH 1/2] Metrics for memory limit and usage --- arbnode/resourcemanager/resource_management.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/arbnode/resourcemanager/resource_management.go b/arbnode/resourcemanager/resource_management.go index b8bbb1f3a3..d90ce4a43c 100644 --- a/arbnode/resourcemanager/resource_management.go +++ b/arbnode/resourcemanager/resource_management.go @@ -24,6 +24,8 @@ var ( limitCheckDurationHistogram = metrics.NewRegisteredHistogram("arb/rpc/limitcheck/duration", nil, metrics.NewBoundedHistogramSample()) limitCheckSuccessCounter = metrics.NewRegisteredCounter("arb/rpc/limitcheck/success", nil) limitCheckFailureCounter = metrics.NewRegisteredCounter("arb/rpc/limitcheck/failure", nil) + nitroMemLimit = metrics.GetOrRegisterGauge("arb/memory/limit", nil) + nitroMemUsage = metrics.GetOrRegisterGauge("arb/memory/usage", nil) errNotSupported = errors.New("not supported") ) @@ -236,7 +238,13 @@ func (c *cgroupsMemoryLimitChecker) isLimitExceeded() (bool, error) { if inactive, err = readFromMemStats(c.files.statsFile, c.files.inactiveRe); err != nil { return false, err } - return limit-(usage-(active+inactive)) <= c.memLimitBytes, nil + + memLimit := limit - c.memLimitBytes + memUsage := usage - (active + inactive) + nitroMemLimit.Update(int64(memLimit)) + nitroMemUsage.Update(int64(memUsage)) + + return memUsage >= memLimit, nil } func (c cgroupsMemoryLimitChecker) String() string { From 85ffd9e97e82802e78296c461c9b4a5ebd6fea5e Mon Sep 17 00:00:00 2001 From: Tristan Wilson Date: Wed, 27 Sep 2023 11:06:19 -0700 Subject: [PATCH 2/2] Fix capitalization of log messages --- arbnode/resourcemanager/resource_management.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arbnode/resourcemanager/resource_management.go b/arbnode/resourcemanager/resource_management.go index d90ce4a43c..cb1ae9d6ea 100644 --- a/arbnode/resourcemanager/resource_management.go +++ b/arbnode/resourcemanager/resource_management.go @@ -48,7 +48,7 @@ func Init(conf *Config) error { var c limitChecker c, err := newCgroupsMemoryLimitCheckerIfSupported(limit) if errors.Is(err, errNotSupported) { - log.Error("no method for determining memory usage and limits was discovered, disabled memory limit RPC throttling") + log.Error("No method for determining memory usage and limits was discovered, disabled memory limit RPC throttling") c = &trivialLimitChecker{} } @@ -119,7 +119,7 @@ func (s *httpServer) ServeHTTP(w http.ResponseWriter, req *http.Request) { exceeded, err := s.c.isLimitExceeded() limitCheckDurationHistogram.Update(time.Since(start).Nanoseconds()) if err != nil { - log.Error("error checking memory limit", "err", err, "checker", s.c) + log.Error("Error checking memory limit", "err", err, "checker", s.c.String()) } else if exceeded { http.Error(w, "Too many requests", http.StatusTooManyRequests) limitCheckFailureCounter.Inc(1)