summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeon Yang (Containers) <lnyng@meta.com>2023-04-12 12:27:01 -0700
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>2023-04-12 12:27:01 -0700
commit177838e11e859ded39ae10fdc809c864c6f5acc3 (patch)
treeddad92dc29e16f570d176a0b168ffd4dd2a2e9fc
parent5234bccdae54dd322b9e63c46bd95a54bbf10b4a (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.rs8
-rw-r--r--below/cgroupfs/src/types.rs8
-rw-r--r--below/dump/src/cgroup.rs16
-rw-r--r--below/dump/src/test.rs8
-rw-r--r--below/model/src/cgroup.rs70
-rw-r--r--below/model/src/common_field_ids.rs10
-rw-r--r--below/render/src/default_configs.rs10
-rw-r--r--below/view/src/cgroup_tabs.rs16
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)),