diff --git a/crates/psh-system/src/disk/handle.rs b/crates/psh-system/src/disk/handle.rs index 297cc7c..a4de33d 100644 --- a/crates/psh-system/src/disk/handle.rs +++ b/crates/psh-system/src/disk/handle.rs @@ -36,6 +36,14 @@ impl DiskHandle { } pub fn stat(&self, interval: Option) -> Result> { - self.0.get(interval) + self.0 + .get(interval) + // remove loop* devices from results + .map(|stats| { + stats + .into_iter() + .filter(|stat| !stat.name.starts_with("loop")) + .collect() + }) } } diff --git a/crates/psh-system/src/network/handle.rs b/crates/psh-system/src/network/handle.rs index 4fbd198..26b1080 100644 --- a/crates/psh-system/src/network/handle.rs +++ b/crates/psh-system/src/network/handle.rs @@ -36,6 +36,20 @@ impl NetworkHandle { } pub fn stat(&self, interval: Option) -> Result> { - self.0.get(interval) + self.0.get(interval).map(|stats| { + stats + .into_iter() + .filter(|(dev, _)| { + !(dev == "lo" + // TODO: docker network interface statistics may be useful + || dev.starts_with("docker") + || dev.starts_with("veth") + || dev.starts_with("br-") + || dev.starts_with("virbr") + || dev.starts_with("tun") + || dev.starts_with("tap")) + }) + .collect() + }) } } diff --git a/crates/psh-system/src/rps/raw.rs b/crates/psh-system/src/rps/raw.rs index 0ea91f2..41dd178 100644 --- a/crates/psh-system/src/rps/raw.rs +++ b/crates/psh-system/src/rps/raw.rs @@ -33,6 +33,10 @@ fn parse_queue_impl(dir: fs::DirEntry) -> Option { fn parse_device_impl(dir: fs::DirEntry) -> Option { let dev_path = dir.path(); + // Check if device file exists + if !dev_path.join("device").exists() { + return None; + } let cur_path = dev_path.join("queues"); match (dev_path.file_name(), fs::read_dir(cur_path)) { (Some(dev_name), Ok(rx_list)) => { @@ -78,20 +82,7 @@ mod tests { rps_path.push("./test_resources/arch/x86_64/intel/net"); let result = parse_rps_impl(rps_path.to_str().unwrap()); - assert_eq!(result.len(), 3); - - let rps_lo = result.iter().find(|rps| rps.dev == "lo"); - assert_eq!( - rps_lo, - Some(&RpsDetails { - dev: "lo".to_string(), - queues: vec![RpsQueue { - name: "rx-0".to_string(), - cpus: Some(CpuMask(vec![false; 20])), - flow_cnt: Some(0), - }] - }) - ); + assert_eq!(result.len(), 2); let rps_enp3s0 = result.iter().find(|rps| rps.dev == "enp3s0"); assert_eq!( diff --git a/crates/psh-system/test_resources/arch/x86_64/intel/net/enp3s0/device/.gitkeep b/crates/psh-system/test_resources/arch/x86_64/intel/net/enp3s0/device/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/crates/psh-system/test_resources/arch/x86_64/intel/net/wlo1/device/.gitkeep b/crates/psh-system/test_resources/arch/x86_64/intel/net/wlo1/device/.gitkeep new file mode 100644 index 0000000..e69de29