#[allow(missing_docs)]
#[derive(Debug)]
#[derive(Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct MemoryDiagnostics
{
pub global_memory_information: DiagnosticUnobtainableResult<MemoryInformation>,
pub global_zoned_virtual_memory_statistics: DiagnosticUnobtainableResult<HashMap<VirtualMemoryStatisticName, u64>>,
pub page_size: DiagnosticUnobtainableResult<PageSizeMemoryDiagnostics>,
pub numa_nodes: NumaNodeMemoryDiagnostics,
}
impl MemoryDiagnostics
{
fn gather(sys_path: &SysPath, proc_path: &ProcPath, supported_huge_page_sizes: &BTreeSet<HugePageSize>) -> Self
{
Self
{
global_memory_information: MemoryInformation::parse_global(proc_path, true).map_err(DiagnosticUnobtainable::from),
global_zoned_virtual_memory_statistics: VirtualMemoryStatisticName::global_zoned_virtual_memory_statistics(proc_path, true).map_err(DiagnosticUnobtainable::from),
page_size: PageSizeMemoryDiagnostics::gather(sys_path, supported_huge_page_sizes),
numa_nodes: NumaNodeMemoryDiagnostics::gather(sys_path, proc_path, supported_huge_page_sizes),
}
}
}