use std::collections::HashMap;
#[derive(Debug, Default)]
pub struct CgroupStats {
pub cpu: CpuCgroupStats,
pub memory: MemoryCgroupStats,
pub pids: PidsCgroupStats,
pub blkio: BlkioCgroupStats,
pub hugetlb: HugeTlbCgroupStats,
}
#[derive(Debug, Default)]
pub struct CpuCgroupStats {
pub cpu_acct: Option<CpuAcctStats>,
pub cpu_throttling: Option<CpuThrottlingStats>,
}
#[derive(Debug, Default)]
pub struct CpuAcctStats {
pub user_usage: u64,
pub system_usage: u64,
pub total_usage: u64,
pub usage_percpu: Vec<u64>,
}
#[derive(Debug, Default)]
pub struct CpuThrottlingStats {
pub periods: u64,
pub throttled_periods: u64,
pub throttled_time: u64,
}
#[derive(Debug, Default)]
pub struct MemoryCgroupStats {
pub memory: Option<MemoryStats>,
pub memory_swap: Option<MemoryStats>,
pub kernel_memory: Option<MemoryStats>,
pub use_hierarchy: bool,
pub cache: u64,
pub rss: u64,
pub rss_huge: u64,
pub shmem: u64,
pub mapped_file: u64,
pub dirty: u64,
pub writeback: u64,
pub swap: u64,
pub pgpgin: u64,
pub pgpgout: u64,
pub pgfault: u64,
pub pgmajfault: u64,
pub inactive_anon: u64,
pub active_anon: u64,
pub inactive_file: u64,
pub active_file: u64,
pub unevictable: u64,
pub hierarchical_memory_limit: i64,
pub hierarchical_memsw_limit: i64,
pub total_cache: u64,
pub total_rss: u64,
pub total_rss_huge: u64,
pub total_shmem: u64,
pub total_mapped_file: u64,
pub total_dirty: u64,
pub total_writeback: u64,
pub total_swap: u64,
pub total_pgpgin: u64,
pub total_pgpgout: u64,
pub total_pgfault: u64,
pub total_pgmajfault: u64,
pub total_inactive_anon: u64,
pub total_active_anon: u64,
pub total_inactive_file: u64,
pub total_active_file: u64,
pub total_unevictable: u64,
}
#[derive(Debug, Default)]
pub struct MemoryStats {
pub usage: u64,
pub max_usage: u64,
pub limit: i64,
pub fail_cnt: u64,
}
#[derive(Debug, Default)]
pub struct PidsCgroupStats {
pub current: u64,
pub limit: i64,
}
#[derive(Debug, Default)]
pub struct BlkioCgroupStats {
pub io_service_bytes_recursive: Vec<BlkioStat>,
pub io_serviced_recursive: Vec<BlkioStat>,
pub io_queued_recursive: Vec<BlkioStat>,
pub io_service_time_recursive: Vec<BlkioStat>,
pub io_wait_time_recursive: Vec<BlkioStat>,
pub io_merged_recursive: Vec<BlkioStat>,
pub io_time_recursive: Vec<BlkioStat>,
pub sectors_recursive: Vec<BlkioStat>,
}
#[derive(Debug, Default)]
pub struct BlkioStat {
pub major: u64,
pub minor: u64,
pub op: String,
pub value: u64,
}
pub type HugeTlbCgroupStats = HashMap<String, HugeTlbStat>;
#[derive(Debug, Default)]
pub struct HugeTlbStat {
pub usage: u64,
pub max_usage: u64,
pub fail_cnt: u64,
}