1 // Copyright 2023 The ChromiumOS Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 use std::collections::BTreeMap; 6 7 use serde::Deserialize; 8 use serde::Serialize; 9 10 #[derive(Debug, Clone, Serialize)] 11 pub struct ProcRecord { 12 pub pid: u32, 13 pub name: String, 14 pub smaps: BTreeMap<String, u64>, 15 } 16 17 #[derive(Debug, Clone, Serialize)] 18 pub struct Record { 19 pub timestamp: u64, 20 pub stats: Vec<ProcRecord>, 21 pub balloon_stats: Option<BalloonStats>, 22 } 23 24 #[derive(Default, Serialize, Deserialize, Debug, Clone)] 25 pub struct BalloonStatsInner { 26 pub swap_in: Option<u64>, 27 pub swap_out: Option<u64>, 28 pub major_faults: Option<u64>, 29 pub minor_faults: Option<u64>, 30 pub free_memory: Option<u64>, 31 pub total_memory: Option<u64>, 32 pub available_memory: Option<u64>, 33 pub disk_caches: Option<u64>, 34 pub hugetlb_allocations: Option<u64>, 35 pub hugetlb_failures: Option<u64>, 36 pub shared_memory: Option<u64>, 37 pub unevictable_memory: Option<u64>, 38 } 39 40 #[derive(Default, Serialize, Deserialize, Debug, Clone)] 41 pub struct BalloonStats { 42 pub stats: BalloonStatsInner, 43 pub balloon_actual: u64, 44 } 45