diff options
author | Leon Yang (Containers) <lnyng@meta.com> | 2024-05-13 10:26:22 -0700 |
---|---|---|
committer | Facebook GitHub Bot <facebook-github-bot@users.noreply.github.com> | 2024-05-13 10:26:22 -0700 |
commit | 41d7be90631eec96c08b32c3fd01fb2e4e68dd35 (patch) | |
tree | ffa3e3e9574e80afdc491205c3256ea9753eb462 | |
parent | 10d0da63bc0b2ad86dd9662209792198aef96107 (diff) |
Record memory.events.local
Summary: As title
Reviewed By: antonis-m
Differential Revision: D57226252
fbshipit-source-id: 09d071360a886f56a75b27447d3b110aa27e56ab
-rw-r--r-- | below/cgroupfs/src/lib.rs | 12 | ||||
-rw-r--r-- | below/cgroupfs/src/types.rs | 9 | ||||
-rw-r--r-- | below/dump/src/test.rs | 5 | ||||
-rw-r--r-- | below/model/src/cgroup.rs | 17 | ||||
-rw-r--r-- | below/model/src/collector.rs | 1 | ||||
-rw-r--r-- | below/model/src/common_field_ids.rs | 7 | ||||
-rw-r--r-- | below/model/src/sample.rs | 1 | ||||
-rw-r--r-- | below/render/src/default_configs.rs | 10 |
8 files changed, 61 insertions, 1 deletions
diff --git a/below/cgroupfs/src/lib.rs b/below/cgroupfs/src/lib.rs index 2688bdc7..5a2430ed 100644 --- a/below/cgroupfs/src/lib.rs +++ b/below/cgroupfs/src/lib.rs @@ -428,6 +428,10 @@ impl CgroupReader { MemoryEvents::read(self) } + pub fn read_memory_events_local(&self) -> Result<MemoryEventsLocal> { + MemoryEventsLocal::read(self) + } + pub fn read_cgroup_stat(&self) -> Result<CgroupStat> { CgroupStat::read(self) } @@ -713,6 +717,14 @@ key_values_format!(MemoryEvents; memory.events; [ oom_kill ]); +key_values_format!(MemoryEventsLocal; memory.events.local; [ + low, + high, + max, + oom, + oom_kill +]); + key_values_format!(CgroupStat; cgroup.stat; [nr_descendants, nr_dying_descendants]); // Trait to add a read() method for `<string> key=value` formatted files diff --git a/below/cgroupfs/src/types.rs b/below/cgroupfs/src/types.rs index 764fc49d..d69e11e2 100644 --- a/below/cgroupfs/src/types.rs +++ b/below/cgroupfs/src/types.rs @@ -133,6 +133,15 @@ pub struct MemoryEvents { } #[derive(Default, Clone, PartialEq, Eq, Debug, Serialize, Deserialize)] +pub struct MemoryEventsLocal { + pub low: Option<u64>, + pub high: Option<u64>, + pub max: Option<u64>, + pub oom: Option<u64>, + pub oom_kill: Option<u64>, +} + +#[derive(Default, Clone, PartialEq, Eq, Debug, Serialize, Deserialize)] pub struct CgroupStat { pub nr_descendants: Option<u32>, pub nr_dying_descendants: Option<u32>, diff --git a/below/dump/src/test.rs b/below/dump/src/test.rs index 4a0d53f5..17396c39 100644 --- a/below/dump/src/test.rs +++ b/below/dump/src/test.rs @@ -534,6 +534,11 @@ fn test_dump_cgroup_titles() { "Events Max", "Events OOM", "Events Kill", + "Events Local Low", + "Events Local High", + "Events Local Max", + "Events Local OOM", + "Events Local Kill", "RBytes", "WBytes", "R I/O", diff --git a/below/model/src/cgroup.rs b/below/model/src/cgroup.rs index b94f3626..d8d20e8a 100644 --- a/below/model/src/cgroup.rs +++ b/below/model/src/cgroup.rs @@ -460,6 +460,11 @@ pub struct CgroupMemoryModel { pub events_max: Option<u64>, pub events_oom: Option<u64>, pub events_oom_kill: Option<u64>, + pub events_local_low: Option<u64>, + pub events_local_high: Option<u64>, + pub events_local_max: Option<u64>, + pub events_local_oom: Option<u64>, + pub events_local_oom_kill: Option<u64>, } impl std::ops::Add for CgroupMemoryModel { @@ -533,6 +538,11 @@ impl std::ops::Add for CgroupMemoryModel { events_max: opt_add(self.events_max, other.events_max), events_oom: opt_add(self.events_oom, other.events_oom), events_oom_kill: opt_add(self.events_oom_kill, other.events_oom_kill), + events_local_low: opt_add(self.events_local_low, other.events_local_low), + events_local_high: opt_add(self.events_local_high, other.events_local_high), + events_local_max: opt_add(self.events_local_max, other.events_local_max), + events_local_oom: opt_add(self.events_local_oom, other.events_local_oom), + events_local_oom_kill: opt_add(self.events_local_oom_kill, other.events_local_oom_kill), } } } @@ -555,6 +565,13 @@ impl CgroupMemoryModel { model.events_oom = events.oom; model.events_oom_kill = events.oom_kill; } + if let Some(events_local) = &sample.memory_events_local { + model.events_local_low = events_local.low; + model.events_local_high = events_local.high; + model.events_local_max = events_local.max; + model.events_local_oom = events_local.oom; + model.events_local_oom_kill = events_local.oom_kill; + } if let Some(stat) = &sample.memory_stat { model.anon = stat.anon; model.file = stat.file; diff --git a/below/model/src/collector.rs b/below/model/src/collector.rs index bf577f09..49ee4788 100644 --- a/below/model/src/collector.rs +++ b/below/model/src/collector.rs @@ -440,6 +440,7 @@ fn collect_cgroup_sample( memory_swap_max: wrap(reader.read_memory_swap_max())?, memory_zswap_max: wrap(reader.read_memory_zswap_max())?, memory_events: wrap(reader.read_memory_events())?.map(Into::into), + memory_events_local: wrap(reader.read_memory_events_local())?.map(Into::into), inode_number: match reader.read_inode_number() { Ok(st_ino) => Some(st_ino as i64), Err(e) => { diff --git a/below/model/src/common_field_ids.rs b/below/model/src/common_field_ids.rs index 3b752298..1bc0a8ee 100644 --- a/below/model/src/common_field_ids.rs +++ b/below/model/src/common_field_ids.rs @@ -23,7 +23,7 @@ /// /// This list also servers as documentation for available field ids that could /// be used in other below crates. A test ensures that this list is up-to-date. -pub const COMMON_MODEL_FIELD_IDS: [&str; 449] = [ +pub const COMMON_MODEL_FIELD_IDS: [&str; 454] = [ "system.hostname", "system.kernel_version", "system.os_release", @@ -209,6 +209,11 @@ pub const COMMON_MODEL_FIELD_IDS: [&str; 449] = [ "cgroup.[path:/<cgroup_path>/.]mem.events_max", "cgroup.[path:/<cgroup_path>/.]mem.events_oom", "cgroup.[path:/<cgroup_path>/.]mem.events_oom_kill", + "cgroup.[path:/<cgroup_path>/.]mem.events_local_low", + "cgroup.[path:/<cgroup_path>/.]mem.events_local_high", + "cgroup.[path:/<cgroup_path>/.]mem.events_local_max", + "cgroup.[path:/<cgroup_path>/.]mem.events_local_oom", + "cgroup.[path:/<cgroup_path>/.]mem.events_local_oom_kill", "cgroup.[path:/<cgroup_path>/.]io_details.<key>.rbytes_per_sec", "cgroup.[path:/<cgroup_path>/.]io_details.<key>.wbytes_per_sec", "cgroup.[path:/<cgroup_path>/.]io_details.<key>.rios_per_sec", diff --git a/below/model/src/sample.rs b/below/model/src/sample.rs index 61c33dde..02bad8d4 100644 --- a/below/model/src/sample.rs +++ b/below/model/src/sample.rs @@ -45,6 +45,7 @@ pub struct CgroupSample { pub memory_swap_max: Option<i64>, pub memory_zswap_max: Option<i64>, pub memory_events: Option<cgroupfs::MemoryEvents>, + pub memory_events_local: Option<cgroupfs::MemoryEventsLocal>, pub inode_number: Option<i64>, pub cgroup_stat: Option<cgroupfs::CgroupStat>, pub memory_numa_stat: Option<BTreeMap<u32, cgroupfs::MemoryNumaStat>>, diff --git a/below/render/src/default_configs.rs b/below/render/src/default_configs.rs index 7074504f..beb43eb9 100644 --- a/below/render/src/default_configs.rs +++ b/below/render/src/default_configs.rs @@ -224,6 +224,11 @@ impl HasRenderConfigForDump for model::SingleCgroupModel { EventsMax => None, EventsOom => Some(counter), EventsOomKill => Some(counter), + EventsLocalLow => None, + EventsLocalHigh => None, + EventsLocalMax => None, + EventsLocalOom => Some(counter), + EventsLocalOomKill => Some(counter), Anon => Some(gauge.unit("bytes")), File => Some(gauge.unit("bytes")), Kernel => Some(gauge.unit("bytes")), @@ -344,6 +349,11 @@ impl HasRenderConfig for model::CgroupMemoryModel { EventsMax => rc.title("Events Max"), EventsOom => rc.title("Events OOM"), EventsOomKill => rc.title("Events Kill"), + EventsLocalLow => rc.title("Events Local Low"), + EventsLocalHigh => rc.title("Events Local High"), + EventsLocalMax => rc.title("Events Local Max"), + EventsLocalOom => rc.title("Events Local OOM"), + EventsLocalOomKill => rc.title("Events Local Kill"), Anon => rc.title("Anon").format(ReadableSize), File => rc.title("File").format(ReadableSize), Kernel => rc.title("Kernel").format(ReadableSize), |