diff options
author | Leon Yang (Containers) <lnyng@meta.com> | 2023-04-12 12:27:01 -0700 |
---|---|---|
committer | Facebook GitHub Bot <facebook-github-bot@users.noreply.github.com> | 2023-04-12 12:27:01 -0700 |
commit | 177838e11e859ded39ae10fdc809c864c6f5acc3 (patch) | |
tree | ddad92dc29e16f570d176a0b168ffd4dd2a2e9fc | |
parent | 5234bccdae54dd322b9e63c46bd95a54bbf10b4a (diff) |
Update memory.stat workingset counters
Summary:
memory.stat workingset counters (refault, activate, restore) have been updated to include anon/file variants since 5.9 kernel: https://github.com/torvalds/linux/commit/170b04b7ae49634df103810dad67b22cf8a99aa6. Updated below to reflect that.
Added all workingset counters to the cgroup memory view, but also abbreviate the titles a bit: WS -> workingset, rflt -> refault, actv -> activate, rstr -> restore.
Reviewed By: antonis-m
Differential Revision: D44920559
fbshipit-source-id: 4b3f997acb770a5e89f6a67d7e4905303f5fcb8b
-rw-r--r-- | below/cgroupfs/src/lib.rs | 8 | ||||
-rw-r--r-- | below/cgroupfs/src/types.rs | 8 | ||||
-rw-r--r-- | below/dump/src/cgroup.rs | 16 | ||||
-rw-r--r-- | below/dump/src/test.rs | 8 | ||||
-rw-r--r-- | below/model/src/cgroup.rs | 70 | ||||
-rw-r--r-- | below/model/src/common_field_ids.rs | 10 | ||||
-rw-r--r-- | below/render/src/default_configs.rs | 10 | ||||
-rw-r--r-- | below/view/src/cgroup_tabs.rs | 16 |
8 files changed, 116 insertions, 30 deletions
diff --git a/below/cgroupfs/src/lib.rs b/below/cgroupfs/src/lib.rs index 4a8f3adc..52cc6308 100644 --- a/below/cgroupfs/src/lib.rs +++ b/below/cgroupfs/src/lib.rs @@ -668,8 +668,12 @@ key_values_format!(MemoryStat; memory.stat; [ slab_unreclaimable, pgfault, pgmajfault, - workingset_refault, - workingset_activate, + workingset_refault_anon, + workingset_refault_file, + workingset_activate_anon, + workingset_activate_file, + workingset_restore_anon, + workingset_restore_file, workingset_nodereclaim, pgrefill, pgscan, diff --git a/below/cgroupfs/src/types.rs b/below/cgroupfs/src/types.rs index d7bc160f..a141c20f 100644 --- a/below/cgroupfs/src/types.rs +++ b/below/cgroupfs/src/types.rs @@ -69,8 +69,12 @@ pub struct MemoryStat { pub slab_unreclaimable: Option<u64>, pub pgfault: Option<u64>, pub pgmajfault: Option<u64>, - pub workingset_refault: Option<u64>, - pub workingset_activate: Option<u64>, + pub workingset_refault_anon: Option<u64>, + pub workingset_refault_file: Option<u64>, + pub workingset_activate_anon: Option<u64>, + pub workingset_activate_file: Option<u64>, + pub workingset_restore_anon: Option<u64>, + pub workingset_restore_file: Option<u64>, pub workingset_nodereclaim: Option<u64>, pub pgrefill: Option<u64>, pub pgscan: Option<u64>, diff --git a/below/dump/src/cgroup.rs b/below/dump/src/cgroup.rs index b8f19311..030fb763 100644 --- a/below/dump/src/cgroup.rs +++ b/below/dump/src/cgroup.rs @@ -50,9 +50,13 @@ impl HasRenderConfigForDump for model::SingleCgroupModel { use model::CgroupMemoryModelFieldId::ThpCollapseAlloc; use model::CgroupMemoryModelFieldId::ThpFaultAlloc; use model::CgroupMemoryModelFieldId::Total; - use model::CgroupMemoryModelFieldId::WorkingsetActivate; + use model::CgroupMemoryModelFieldId::WorkingsetActivateAnon; + use model::CgroupMemoryModelFieldId::WorkingsetActivateFile; use model::CgroupMemoryModelFieldId::WorkingsetNodereclaim; - use model::CgroupMemoryModelFieldId::WorkingsetRefault; + use model::CgroupMemoryModelFieldId::WorkingsetRefaultAnon; + use model::CgroupMemoryModelFieldId::WorkingsetRefaultFile; + use model::CgroupMemoryModelFieldId::WorkingsetRestoreAnon; + use model::CgroupMemoryModelFieldId::WorkingsetRestoreFile; use model::CgroupMemoryModelFieldId::Zswap; use model::CgroupPressureModelFieldId::MemoryFullPct; use model::CgroupPressureModelFieldId::MemorySomePct; @@ -88,8 +92,12 @@ impl HasRenderConfigForDump for model::SingleCgroupModel { Mem(Shmem) => rc.title("Mem Shmem"), Mem(Pgfault) => rc.title("Pgfault"), Mem(Pgmajfault) => rc.title("Pgmajfault"), - Mem(WorkingsetRefault) => rc.title("Workingset Refault"), - Mem(WorkingsetActivate) => rc.title("Workingset Activate"), + Mem(WorkingsetRefaultAnon) => rc.title("Workingset Refault Anon"), + Mem(WorkingsetRefaultFile) => rc.title("Workingset Refault File"), + Mem(WorkingsetActivateAnon) => rc.title("Workingset Activate Anon"), + Mem(WorkingsetActivateFile) => rc.title("Workingset Activate File"), + Mem(WorkingsetRestoreAnon) => rc.title("Workingset Restore Anon"), + Mem(WorkingsetRestoreFile) => rc.title("Workingset Restore File"), Mem(WorkingsetNodereclaim) => rc.title("Workingset Nodereclaim"), Mem(Pgrefill) => rc.title("Pgrefill"), Mem(Pgscan) => rc.title("Pgscan"), diff --git a/below/dump/src/test.rs b/below/dump/src/test.rs index 8f4a6c67..1f581b16 100644 --- a/below/dump/src/test.rs +++ b/below/dump/src/test.rs @@ -499,8 +499,12 @@ fn test_dump_cgroup_titles() { "Slab Unreclaimable", "Pgfault", "Pgmajfault", - "Workingset Refault", - "Workingset Activate", + "Workingset Refault Anon", + "Workingset Refault File", + "Workingset Activate Anon", + "Workingset Activate File", + "Workingset Restore Anon", + "Workingset Restore File", "Workingset Nodereclaim", "Pgrefill", "Pgscan", diff --git a/below/model/src/cgroup.rs b/below/model/src/cgroup.rs index f96f1c03..d6d0f70d 100644 --- a/below/model/src/cgroup.rs +++ b/below/model/src/cgroup.rs @@ -482,8 +482,12 @@ pub struct CgroupMemoryModel { pub slab_unreclaimable: Option<u64>, pub pgfault: Option<u64>, pub pgmajfault: Option<u64>, - pub workingset_refault: Option<u64>, - pub workingset_activate: Option<u64>, + pub workingset_refault_anon: Option<u64>, + pub workingset_refault_file: Option<u64>, + pub workingset_activate_anon: Option<u64>, + pub workingset_activate_file: Option<u64>, + pub workingset_restore_anon: Option<u64>, + pub workingset_restore_file: Option<u64>, pub workingset_nodereclaim: Option<u64>, pub pgrefill: Option<u64>, pub pgscan: Option<u64>, @@ -529,8 +533,30 @@ impl std::ops::Add for CgroupMemoryModel { slab_unreclaimable: opt_add(self.slab_unreclaimable, other.slab_unreclaimable), pgfault: opt_add(self.pgfault, other.pgfault), pgmajfault: opt_add(self.pgmajfault, other.pgmajfault), - workingset_refault: opt_add(self.workingset_refault, other.workingset_refault), - workingset_activate: opt_add(self.workingset_activate, other.workingset_activate), + workingset_refault_anon: opt_add( + self.workingset_refault_anon, + other.workingset_refault_anon, + ), + workingset_refault_file: opt_add( + self.workingset_refault_file, + other.workingset_refault_file, + ), + workingset_activate_anon: opt_add( + self.workingset_activate_anon, + other.workingset_activate_anon, + ), + workingset_activate_file: opt_add( + self.workingset_activate_file, + other.workingset_activate_file, + ), + workingset_restore_anon: opt_add( + self.workingset_restore_anon, + other.workingset_restore_anon, + ), + workingset_restore_file: opt_add( + self.workingset_restore_file, + other.workingset_restore_file, + ), workingset_nodereclaim: opt_add( self.workingset_nodereclaim, other.workingset_nodereclaim, @@ -603,15 +629,39 @@ impl CgroupMemoryModel { model.pgfault = count_per_sec!(last_stat.pgfault, stat.pgfault, delta, u64); model.pgmajfault = count_per_sec!(last_stat.pgmajfault, stat.pgmajfault, delta, u64); - model.workingset_refault = count_per_sec!( - last_stat.workingset_refault, - stat.workingset_refault, + model.workingset_refault_anon = count_per_sec!( + last_stat.workingset_refault_anon, + stat.workingset_refault_anon, + delta, + u64 + ); + model.workingset_refault_file = count_per_sec!( + last_stat.workingset_refault_file, + stat.workingset_refault_file, + delta, + u64 + ); + model.workingset_activate_anon = count_per_sec!( + last_stat.workingset_activate_anon, + stat.workingset_activate_anon, + delta, + u64 + ); + model.workingset_activate_file = count_per_sec!( + last_stat.workingset_activate_file, + stat.workingset_activate_file, + delta, + u64 + ); + model.workingset_restore_anon = count_per_sec!( + last_stat.workingset_restore_anon, + stat.workingset_restore_anon, delta, u64 ); - model.workingset_activate = count_per_sec!( - last_stat.workingset_activate, - stat.workingset_activate, + model.workingset_restore_file = count_per_sec!( + last_stat.workingset_restore_file, + stat.workingset_restore_file, delta, u64 ); diff --git a/below/model/src/common_field_ids.rs b/below/model/src/common_field_ids.rs index 11952580..ea10105c 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; 357] = [ +pub const COMMON_MODEL_FIELD_IDS: [&str; 361] = [ "system.hostname", "system.kernel_version", "system.os_release", @@ -173,8 +173,12 @@ pub const COMMON_MODEL_FIELD_IDS: [&str; 357] = [ "cgroup.[path:/<cgroup_path>/.]mem.slab_unreclaimable", "cgroup.[path:/<cgroup_path>/.]mem.pgfault", "cgroup.[path:/<cgroup_path>/.]mem.pgmajfault", - "cgroup.[path:/<cgroup_path>/.]mem.workingset_refault", - "cgroup.[path:/<cgroup_path>/.]mem.workingset_activate", + "cgroup.[path:/<cgroup_path>/.]mem.workingset_refault_anon", + "cgroup.[path:/<cgroup_path>/.]mem.workingset_refault_file", + "cgroup.[path:/<cgroup_path>/.]mem.workingset_activate_anon", + "cgroup.[path:/<cgroup_path>/.]mem.workingset_activate_file", + "cgroup.[path:/<cgroup_path>/.]mem.workingset_restore_anon", + "cgroup.[path:/<cgroup_path>/.]mem.workingset_restore_file", "cgroup.[path:/<cgroup_path>/.]mem.workingset_nodereclaim", "cgroup.[path:/<cgroup_path>/.]mem.pgrefill", "cgroup.[path:/<cgroup_path>/.]mem.pgscan", diff --git a/below/render/src/default_configs.rs b/below/render/src/default_configs.rs index 33241194..6ef6cc5a 100644 --- a/below/render/src/default_configs.rs +++ b/below/render/src/default_configs.rs @@ -114,9 +114,13 @@ impl HasRenderConfig for model::CgroupMemoryModel { SlabUnreclaimable => rc.title("Slab Unreclaimable").format(ReadableSize), Pgfault => rc.title("Pgfault/s"), Pgmajfault => rc.title("Pgmajfault/s"), - WorkingsetRefault => rc.title("Workingset Refault/s"), - WorkingsetActivate => rc.title("Workingset Activate/s"), - WorkingsetNodereclaim => rc.title("Workingset Nodereclaim/s"), + WorkingsetRefaultAnon => rc.title("WS Rflt Anon/s"), + WorkingsetRefaultFile => rc.title("WS Rflt File/s"), + WorkingsetActivateAnon => rc.title("WS Actv Anon/s"), + WorkingsetActivateFile => rc.title("WS Actv File/s"), + WorkingsetRestoreAnon => rc.title("WS Rstr Anon/s"), + WorkingsetRestoreFile => rc.title("WS Rstr File/s"), + WorkingsetNodereclaim => rc.title("WS Nodereclaim/s"), Pgrefill => rc.title("Pgrefill/s"), Pgscan => rc.title("Pgscan/s"), Pgsteal => rc.title("Pgsteal/s"), diff --git a/below/view/src/cgroup_tabs.rs b/below/view/src/cgroup_tabs.rs index 936193f4..47937787 100644 --- a/below/view/src/cgroup_tabs.rs +++ b/below/view/src/cgroup_tabs.rs @@ -267,9 +267,13 @@ pub mod default_tabs { use model::CgroupMemoryModelFieldId::ThpFaultAlloc; use model::CgroupMemoryModelFieldId::Total; use model::CgroupMemoryModelFieldId::Unevictable; - use model::CgroupMemoryModelFieldId::WorkingsetActivate; + use model::CgroupMemoryModelFieldId::WorkingsetActivateAnon; + use model::CgroupMemoryModelFieldId::WorkingsetActivateFile; use model::CgroupMemoryModelFieldId::WorkingsetNodereclaim; - use model::CgroupMemoryModelFieldId::WorkingsetRefault; + use model::CgroupMemoryModelFieldId::WorkingsetRefaultAnon; + use model::CgroupMemoryModelFieldId::WorkingsetRefaultFile; + use model::CgroupMemoryModelFieldId::WorkingsetRestoreAnon; + use model::CgroupMemoryModelFieldId::WorkingsetRestoreFile; use model::CgroupPressureModelFieldId::CpuFullPct; use model::CgroupPressureModelFieldId::CpuSomePct; use model::CgroupPressureModelFieldId::IoFullPct; @@ -356,8 +360,12 @@ pub mod default_tabs { ViewItem::from_default(Mem(SlabUnreclaimable)), ViewItem::from_default(Mem(Pgfault)), ViewItem::from_default(Mem(Pgmajfault)), - ViewItem::from_default(Mem(WorkingsetRefault)), - ViewItem::from_default(Mem(WorkingsetActivate)), + ViewItem::from_default(Mem(WorkingsetRefaultAnon)), + ViewItem::from_default(Mem(WorkingsetRefaultFile)), + ViewItem::from_default(Mem(WorkingsetActivateAnon)), + ViewItem::from_default(Mem(WorkingsetActivateFile)), + ViewItem::from_default(Mem(WorkingsetRestoreAnon)), + ViewItem::from_default(Mem(WorkingsetRestoreFile)), ViewItem::from_default(Mem(WorkingsetNodereclaim)), ViewItem::from_default(Mem(Pgrefill)), ViewItem::from_default(Mem(Pgscan)), |