1use std::collections::BTreeSet;
16
17use serde::Deserialize;
18use serde::Serialize;
19
20#[derive(Default, Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
21pub struct CpuStat {
22 pub usage_usec: Option<u64>,
23 pub user_usec: Option<u64>,
24 pub system_usec: Option<u64>,
25 pub nr_periods: Option<u64>,
26 pub nr_throttled: Option<u64>,
27 pub throttled_usec: Option<u64>,
28}
29
30#[derive(Default, Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
31pub struct CpuMax {
32 pub max_usec: i64,
34 pub period_usec: u64,
35}
36
37#[derive(Default, Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
38pub struct IoStat {
39 pub rbytes: Option<u64>,
40 pub wbytes: Option<u64>,
41 pub rios: Option<u64>,
42 pub wios: Option<u64>,
43 pub dbytes: Option<u64>,
44 pub dios: Option<u64>,
45 pub cost_usage: Option<u64>,
46 pub cost_wait: Option<u64>,
47 pub cost_indebt: Option<u64>,
48 pub cost_indelay: Option<u64>,
49}
50
51#[derive(Default, Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
52pub struct MemoryStat {
53 pub anon: Option<u64>,
54 pub file: Option<u64>,
55 pub kernel: Option<u64>,
56 pub kernel_stack: Option<u64>,
57 pub slab: Option<u64>,
58 pub sock: Option<u64>,
59 pub shmem: Option<u64>,
60 pub zswap: Option<u64>,
61 pub zswapped: Option<u64>,
62 pub file_mapped: Option<u64>,
63 pub file_dirty: Option<u64>,
64 pub file_writeback: Option<u64>,
65 pub anon_thp: Option<u64>,
66 pub inactive_anon: Option<u64>,
67 pub active_anon: Option<u64>,
68 pub inactive_file: Option<u64>,
69 pub active_file: Option<u64>,
70 pub unevictable: Option<u64>,
71 pub slab_reclaimable: Option<u64>,
72 pub slab_unreclaimable: Option<u64>,
73 pub pgfault: Option<u64>,
74 pub pgmajfault: Option<u64>,
75 pub workingset_refault_anon: Option<u64>,
76 pub workingset_refault_file: Option<u64>,
77 pub workingset_activate_anon: Option<u64>,
78 pub workingset_activate_file: Option<u64>,
79 pub workingset_restore_anon: Option<u64>,
80 pub workingset_restore_file: Option<u64>,
81 pub workingset_nodereclaim: Option<u64>,
82 pub pgrefill: Option<u64>,
83 pub pgscan: Option<u64>,
84 pub pgsteal: Option<u64>,
85 pub pgactivate: Option<u64>,
86 pub pgdeactivate: Option<u64>,
87 pub pglazyfree: Option<u64>,
88 pub pglazyfreed: Option<u64>,
89 pub thp_fault_alloc: Option<u64>,
90 pub thp_collapse_alloc: Option<u64>,
91}
92
93#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
94pub struct PressureMetrics {
95 pub avg10: Option<f64>,
96 pub avg60: Option<f64>,
97 pub avg300: Option<f64>,
98 pub total: Option<u64>,
99}
100
101#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
102pub struct CpuPressure {
103 pub some: PressureMetrics,
104 pub full: Option<PressureMetrics>,
105}
106
107#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
108pub struct IoPressure {
109 pub some: PressureMetrics,
110 pub full: PressureMetrics,
111}
112
113#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
114pub struct MemoryPressure {
115 pub some: PressureMetrics,
116 pub full: PressureMetrics,
117}
118
119#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
120pub struct Pressure {
121 pub cpu: CpuPressure,
122 pub io: IoPressure,
123 pub memory: MemoryPressure,
124}
125
126#[derive(Default, Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
127pub struct MemoryEvents {
128 pub low: Option<u64>,
129 pub high: Option<u64>,
130 pub max: Option<u64>,
131 pub oom: Option<u64>,
132 pub oom_kill: Option<u64>,
133}
134
135#[derive(Default, Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
136pub struct MemoryEventsLocal {
137 pub low: Option<u64>,
138 pub high: Option<u64>,
139 pub max: Option<u64>,
140 pub oom: Option<u64>,
141 pub oom_kill: Option<u64>,
142}
143
144#[derive(Default, Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
145pub struct CgroupStat {
146 pub nr_descendants: Option<u32>,
147 pub nr_dying_descendants: Option<u32>,
148}
149
150#[derive(Default, Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
151pub struct MemoryNumaStat {
152 pub anon: Option<u64>,
153 pub file: Option<u64>,
154 pub kernel_stack: Option<u64>,
155 pub pagetables: Option<u64>,
156 pub shmem: Option<u64>,
157 pub file_mapped: Option<u64>,
158 pub file_dirty: Option<u64>,
159 pub file_writeback: Option<u64>,
160 pub swapcached: Option<u64>,
161 pub anon_thp: Option<u64>,
162 pub file_thp: Option<u64>,
163 pub shmem_thp: Option<u64>,
164 pub inactive_anon: Option<u64>,
165 pub active_anon: Option<u64>,
166 pub inactive_file: Option<u64>,
167 pub active_file: Option<u64>,
168 pub unevictable: Option<u64>,
169 pub slab_reclaimable: Option<u64>,
170 pub slab_unreclaimable: Option<u64>,
171 pub workingset_refault_anon: Option<u64>,
172 pub workingset_refault_file: Option<u64>,
173 pub workingset_activate_anon: Option<u64>,
174 pub workingset_activate_file: Option<u64>,
175 pub workingset_restore_anon: Option<u64>,
176 pub workingset_restore_file: Option<u64>,
177 pub workingset_nodereclaim: Option<u64>,
178}
179
180#[derive(Default, Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
183pub struct Cpuset {
184 pub cpus: BTreeSet<u32>,
185}
186
187#[derive(Default, Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
188pub struct MemNodes {
189 pub nodes: BTreeSet<u32>,
190}