below_model/
sample.rs

1// Copyright (c) Facebook, Inc. and its affiliates.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15use 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    // Previously named slabinfo as a BTreeMap. Updated to a Vec with a new name
68    // to avoid breaking replay due to deserialization errors.
69    #[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}