1use super::*;
16
17#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
18pub struct Sample {
19 pub cgroup: CgroupSample,
20 pub processes: procfs::PidMap,
21 pub system: SystemSample,
22 pub netstats: procfs::NetStat,
23 pub gpus: Option<gpu_stats::GpuSample>,
24 pub ethtool: Option<ethtool::EthtoolStats>,
25 pub resctrl: Option<resctrlfs::ResctrlSample>,
26 pub tc: Option<tc::TcStats>,
27}
28
29#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
30pub struct CgroupSample {
31 pub cpu_stat: Option<cgroupfs::CpuStat>,
32 pub io_stat: Option<BTreeMap<String, cgroupfs::IoStat>>,
33 pub tids_current: Option<u64>,
34 pub tids_max: Option<i64>,
35 pub memory_current: Option<i64>,
36 pub memory_stat: Option<cgroupfs::MemoryStat>,
37 pub pressure: Option<cgroupfs::Pressure>,
38 pub children: Option<BTreeMap<String, CgroupSample>>,
39 pub memory_swap_current: Option<i64>,
40 pub memory_zswap_current: Option<i64>,
41 pub memory_min: Option<i64>,
42 pub memory_low: Option<i64>,
43 pub memory_high: Option<i64>,
44 pub memory_max: Option<i64>,
45 pub memory_swap_max: Option<i64>,
46 pub memory_zswap_max: Option<i64>,
47 pub memory_events: Option<cgroupfs::MemoryEvents>,
48 pub memory_events_local: Option<cgroupfs::MemoryEventsLocal>,
49 pub inode_number: Option<i64>,
50 pub cgroup_stat: Option<cgroupfs::CgroupStat>,
51 pub memory_numa_stat: Option<BTreeMap<u32, cgroupfs::MemoryNumaStat>>,
52 pub cpuset_cpus: Option<cgroupfs::Cpuset>,
53 pub cpuset_cpus_effective: Option<cgroupfs::Cpuset>,
54 pub cpuset_mems: Option<cgroupfs::MemNodes>,
55 pub cpuset_mems_effective: Option<cgroupfs::MemNodes>,
56 pub cpu_weight: Option<u32>,
57 pub cpu_max: Option<cgroupfs::CpuMax>,
58 pub cgroup_controllers: Option<BTreeSet<String>>,
59 pub cgroup_subtree_control: Option<BTreeSet<String>>,
60}
61
62#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
63pub struct SystemSample {
64 pub stat: procfs::Stat,
65 pub meminfo: procfs::MemInfo,
66 pub vmstat: procfs::VmStat,
67 #[serde(default)]
70 pub slabinfo_vec: Vec<procfs::SlabInfo>,
71 pub ksm: Option<procfs::Ksm>,
72 pub hostname: String,
73 pub disks: procfs::DiskMap,
74 pub btrfs: Option<btrfs::BtrfsMap>,
75 pub kernel_version: Option<String>,
76 pub os_release: Option<String>,
77}