Skip to content

Commit

Permalink
rip smaps_rollup without Rollup structure
Browse files Browse the repository at this point in the history
Signed-off-by: Brian L. Troutwine <brian.troutwine@datadoghq.com>
  • Loading branch information
blt committed Dec 6, 2024
1 parent 5a1f0ac commit ec46405
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 348 deletions.
11 changes: 9 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions lading/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ flate2 = { version = "1.0.34", default-features = false, features = [
] }
futures = "0.3.31"
fuser = { version = "0.15", optional = true }
heck = { version = "0.5", default-features = false }
http = "0.2"
http-serde = "1.1"
hyper = { workspace = true, features = ["backports", "client", "deprecated", "http1", "http2", "server"] }
Expand Down
1 change: 0 additions & 1 deletion lading/src/captures.rs
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,6 @@ impl CaptureManager {
.ok_or(Error::CapturePath)?
);
for line in lines.drain(..) {
info!("encoding: {line:?}");
let pyld = serde_json::to_string(&line)?;
self.capture_fp
.write_all(pyld.as_bytes())
Expand Down
1 change: 1 addition & 0 deletions lading/src/observer/linux/cgroup/v2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ pub(crate) async fn poll(file_path: &Path, labels: &[(String, String)]) -> Resul
};
let file_path = entry.path();

// If the file is not readable, skip it.
match fs::read_to_string(&file_path).await {
Ok(content) => {
let content = content.trim();
Expand Down
85 changes: 9 additions & 76 deletions lading/src/observer/linux/procfs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -345,10 +345,10 @@ impl Sampler {

let measures = memory_regions.aggregate();
let labels = [
("pid", format!("{pid}")),
("exe", basename.clone()),
("cmdline", cmdline.clone()),
("comm", comm.clone()),
(String::from("pid"), format!("{pid}")),
(String::from("exe"), basename.clone()),
(String::from("cmdline"), cmdline.clone()),
(String::from("comm"), comm.clone()),
];

gauge!("smaps.rss.sum", &labels).set(measures.rss as f64);
Expand All @@ -375,78 +375,11 @@ impl Sampler {
gauge!("smaps.locked.sum", &labels).set(measures.locked as f64);

// `/proc/{pid}/smaps_rollup`
let rollup = match memory::smaps_rollup::Rollup::from_pid(pid) {
Ok(rollup) => rollup,
Err(e) => {
// We don't want to bail out entirely if we can't read smap rollup
// which will happen if we don't have permissions or, more
// likely, the process has exited.
warn!("Couldn't process `/proc/{pid}/smaps_rollup`: {}", e);
return;
}
};

gauge!("smaps_rollup.rss", &labels).set(rollup.rss as f64);
gauge!("smaps_rollup.pss", &labels).set(rollup.pss as f64);
if let Some(v) = rollup.pss_dirty {
gauge!("smaps_rollup.pss_dirty", &labels).set(v as f64);
}
if let Some(v) = rollup.pss_anon {
gauge!("smaps_rollup.pss_anon", &labels).set(v as f64);
}
if let Some(v) = rollup.pss_file {
gauge!("smaps_rollup.pss_file", &labels).set(v as f64);
}
if let Some(v) = rollup.pss_shmem {
gauge!("smaps_rollup.pss_shmem", &labels).set(v as f64);
}
if let Some(v) = rollup.swap {
gauge!("smaps_rollup.swap", &labels).set(v as f64);
}
if let Some(v) = rollup.swap_pss {
gauge!("smaps_rollup.swap_pss", &labels).set(v as f64);
}
if let Some(v) = rollup.shared_clean {
gauge!("smaps_rollup.shared_clean", &labels).set(v as f64);
}
if let Some(v) = rollup.shared_dirty {
gauge!("smaps_rollup.shared_dirty", &labels).set(v as f64);
}
if let Some(v) = rollup.private_clean {
gauge!("smaps_rollup.private_clean", &labels).set(v as f64);
}
if let Some(v) = rollup.private_dirty {
gauge!("smaps_rollup.private_dirty", &labels).set(v as f64);
}
if let Some(v) = rollup.referenced {
gauge!("smaps_rollup.referenced", &labels).set(v as f64);
}
if let Some(v) = rollup.anonymous {
gauge!("smaps_rollup.anonymous", &labels).set(v as f64);
}
if let Some(v) = rollup.lazy_free {
gauge!("smaps_rollup.lazy_free", &labels).set(v as f64);
}
if let Some(v) = rollup.anon_huge_pages {
gauge!("smaps_rollup.anon_huge_pages", &labels).set(v as f64);
}
if let Some(v) = rollup.shmem_pmd_mapped {
gauge!("smaps_rollup.shmem_pmd_mapped", &labels).set(v as f64);
}
if let Some(v) = rollup.shared_hugetlb {
gauge!("smaps_rollup.shared_hugetlb", &labels).set(v as f64);
}
if let Some(v) = rollup.private_hugetlb {
gauge!("smaps_rollup.private_hugetlb", &labels).set(v as f64);
}
if let Some(v) = rollup.shared_hugetlb {
gauge!("smaps_rollup.shared_hugetlb", &labels).set(v as f64);
}
if let Some(v) = rollup.file_pmd_mapped {
gauge!("smaps_rollup.file_pmd_mapped", &labels).set(v as f64);
}
if let Some(v) = rollup.locked {
gauge!("smaps_rollup.locked", &labels).set(v as f64);
if let Err(err) = memory::smaps_rollup::poll(pid, &labels).await {
// We don't want to bail out entirely if we can't read smap rollup
// which will happen if we don't have permissions or, more
// likely, the process has exited.
warn!("Couldn't process `/proc/{pid}/smaps_rollup`: {err}");
}
});
}
Expand Down
Loading

0 comments on commit ec46405

Please sign in to comment.