use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[allow(dead_code)]
pub type ProcessInfoResult = Option<(
f64,
f64,
u64,
u64,
String,
String,
String,
u64,
String,
u32,
u32,
)>;
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct GpuInfo {
pub uuid: String,
pub time: String,
pub name: String,
pub device_type: String, pub host_id: String, pub hostname: String, pub instance: String, pub utilization: f64,
pub ane_utilization: f64,
pub dla_utilization: Option<f64>,
pub tensorcore_utilization: Option<f64>, pub temperature: u32,
pub used_memory: u64,
pub total_memory: u64,
pub frequency: u32,
pub power_consumption: f64,
pub gpu_core_count: Option<u32>, pub detail: HashMap<String, String>,
}
#[derive(Clone, Serialize, Deserialize)]
pub struct ProcessInfo {
pub device_id: usize, pub device_uuid: String, pub pid: u32, pub process_name: String, pub used_memory: u64, pub cpu_percent: f64, pub memory_percent: f64, pub memory_rss: u64, pub memory_vms: u64, pub user: String, pub state: String, pub start_time: String, pub cpu_time: u64, pub command: String, pub ppid: u32, pub threads: u32, pub uses_gpu: bool, pub priority: i32, pub nice_value: i32, pub gpu_utilization: f64, }
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct CpuInfo {
pub host_id: String, pub hostname: String, pub instance: String, pub cpu_model: String,
pub architecture: String, pub platform_type: CpuPlatformType,
pub socket_count: u32, pub total_cores: u32, pub total_threads: u32, pub base_frequency_mhz: u32, pub max_frequency_mhz: u32, pub cache_size_mb: u32, pub utilization: f64, pub temperature: Option<u32>, pub power_consumption: Option<f64>, pub per_socket_info: Vec<CpuSocketInfo>, pub apple_silicon_info: Option<AppleSiliconCpuInfo>, pub per_core_utilization: Vec<CoreUtilization>, pub time: String, }
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct CoreUtilization {
pub core_id: u32, pub core_type: CoreType, pub utilization: f64, }
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub enum CoreType {
Performance, Efficiency, Standard, }
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub enum CpuPlatformType {
Intel,
Amd,
AppleSilicon,
Arm,
Other(String), }
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct CpuSocketInfo {
pub socket_id: u32, pub utilization: f64, pub cores: u32, pub threads: u32, pub temperature: Option<u32>, pub frequency_mhz: u32, }
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct AppleSiliconCpuInfo {
pub p_core_count: u32, pub e_core_count: u32, pub gpu_core_count: u32, pub p_core_utilization: f64, pub e_core_utilization: f64, pub ane_ops_per_second: Option<f64>, pub p_cluster_frequency_mhz: Option<u32>, pub e_cluster_frequency_mhz: Option<u32>, pub p_core_l2_cache_mb: Option<u32>, pub e_core_l2_cache_mb: Option<u32>, }
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct MemoryInfo {
pub host_id: String, pub hostname: String, pub instance: String, pub total_bytes: u64, pub used_bytes: u64, pub available_bytes: u64, pub free_bytes: u64, pub buffers_bytes: u64, pub cached_bytes: u64, pub swap_total_bytes: u64, pub swap_used_bytes: u64, pub swap_free_bytes: u64, pub utilization: f64, pub time: String, }
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
pub struct ChassisInfo {
pub host_id: String, pub hostname: String, pub instance: String,
pub total_power_watts: Option<f64>,
pub inlet_temperature: Option<f64>, pub outlet_temperature: Option<f64>, pub thermal_pressure: Option<String>,
pub fan_speeds: Vec<FanInfo>,
pub psu_status: Vec<PsuInfo>,
pub detail: HashMap<String, String>,
pub time: String, }
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct FanInfo {
pub id: u32, pub name: String, pub speed_rpm: u32, pub max_rpm: u32, }
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct PsuInfo {
pub id: u32, pub name: String, pub status: PsuStatus, pub power_watts: Option<f64>, }
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
pub enum PsuStatus {
#[default]
Unknown, Ok, Degraded, Failed, NotPresent, }