1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
use serde::Deserialize;
use serde::Serialize;
#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
pub struct CpuStat {
pub usage_usec: Option<u64>,
pub user_usec: Option<u64>,
pub system_usec: Option<u64>,
pub nr_periods: Option<u64>,
pub nr_throttled: Option<u64>,
pub throttled_usec: Option<u64>,
}
#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
pub struct IoStat {
pub rbytes: Option<u64>,
pub wbytes: Option<u64>,
pub rios: Option<u64>,
pub wios: Option<u64>,
pub dbytes: Option<u64>,
pub dios: Option<u64>,
pub cost_usage: Option<u64>,
pub cost_wait: Option<u64>,
pub cost_indebt: Option<u64>,
pub cost_indelay: Option<u64>,
}
#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
pub struct MemoryStat {
pub anon: Option<u64>,
pub file: Option<u64>,
pub kernel_stack: Option<u64>,
pub slab: Option<u64>,
pub sock: Option<u64>,
pub shmem: Option<u64>,
pub file_mapped: Option<u64>,
pub file_dirty: Option<u64>,
pub file_writeback: Option<u64>,
pub anon_thp: Option<u64>,
pub inactive_anon: Option<u64>,
pub active_anon: Option<u64>,
pub inactive_file: Option<u64>,
pub active_file: Option<u64>,
pub unevictable: Option<u64>,
pub slab_reclaimable: Option<u64>,
pub slab_unreclaimable: Option<u64>,
pub pgfault: Option<u64>,
pub pgmajfault: Option<u64>,
pub workingset_refault: Option<u64>,
pub workingset_activate: Option<u64>,
pub workingset_nodereclaim: Option<u64>,
pub pgrefill: Option<u64>,
pub pgscan: Option<u64>,
pub pgsteal: Option<u64>,
pub pgactivate: Option<u64>,
pub pgdeactivate: Option<u64>,
pub pglazyfree: Option<u64>,
pub pglazyfreed: Option<u64>,
pub thp_fault_alloc: Option<u64>,
pub thp_collapse_alloc: Option<u64>,
}
#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
pub struct PressureMetrics {
pub avg10: Option<f64>,
pub avg60: Option<f64>,
pub avg300: Option<f64>,
pub total: Option<u64>,
}
#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
pub struct CpuPressure {
pub some: PressureMetrics,
pub full: Option<PressureMetrics>,
}
#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
pub struct IoPressure {
pub some: PressureMetrics,
pub full: PressureMetrics,
}
#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
pub struct MemoryPressure {
pub some: PressureMetrics,
pub full: PressureMetrics,
}
#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
pub struct Pressure {
pub cpu: CpuPressure,
pub io: IoPressure,
pub memory: MemoryPressure,
}
#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
pub struct MemoryEvents {
pub low: Option<u64>,
pub high: Option<u64>,
pub max: Option<u64>,
pub oom: Option<u64>,
pub oom_kill: Option<u64>,
}
#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize)]
pub struct CgroupStat {
pub nr_descendants: Option<u32>,
pub nr_dying_descendants: Option<u32>,
}