Envoy resource monitoring & overload manager configuration (#5106)

* Initial envoy cgroup resource monitor implementation

* Add cgroupv1 support; add metrics instrumentation

* Slight refactor for more efficient memory limit detection

Instead of reading memory.max/limit_in_bytes on every tick, we
read it once, then again only when it is modified.

To support this change, logic for computing the saturation was moved out
of the cgroup driver and into the resource monitor, and the driver
interface now has separate methods for reading memory usage and limit.

* Code cleanup/lint fixes

* Add platform build tags

* Add unit tests

* Fix lint issues

* Add runtime flag to allow disabling resource monitor

* Clamp saturation values to the range [0.0, 1.0]

* Switch to x/sys/unix; handle inotify IN_IGNORED events
This commit is contained in:
Joe Kralicky 2024-05-28 16:57:09 -04:00 committed by GitHub
parent aa3b790601
commit 927f24e1ff
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 1828 additions and 2 deletions

View file

@ -11,6 +11,8 @@ var (
// RuntimeFlagLegacyIdentityManager enables the legacy identity manager
RuntimeFlagLegacyIdentityManager = runtimeFlag("legacy_identity_manager", false)
RuntimeFlagEnvoyResourceManagerEnabled = runtimeFlag("envoy_resource_manager_enabled", true)
)
// RuntimeFlag is a runtime flag that can flip on/off certain features