179 lines
3.9 KiB
Python
179 lines
3.9 KiB
Python
from dataclasses import dataclass, field
|
|
from typing import List, Optional, Tuple
|
|
|
|
from platypush.schemas.dataclasses import percent_field
|
|
|
|
|
|
@dataclass
|
|
class CpuInfo:
|
|
"""
|
|
CPU info data class.
|
|
"""
|
|
|
|
architecture: Optional[str] = field(
|
|
metadata={
|
|
'data_key': 'arch_string_raw',
|
|
'metadata': {
|
|
'description': 'CPU architecture',
|
|
'example': 'x86_64',
|
|
},
|
|
}
|
|
)
|
|
|
|
bits: int = field(
|
|
metadata={
|
|
'metadata': {
|
|
'description': 'CPU bits / register size',
|
|
'example': 64,
|
|
}
|
|
}
|
|
)
|
|
|
|
cores: int = field(
|
|
metadata={
|
|
'data_key': 'count',
|
|
'metadata': {
|
|
'description': 'Number of cores',
|
|
'example': 4,
|
|
},
|
|
}
|
|
)
|
|
|
|
vendor: Optional[str] = field(
|
|
metadata={
|
|
'data_key': 'vendor_id_raw',
|
|
'metadata': {
|
|
'description': 'Vendor string',
|
|
'example': 'GenuineIntel',
|
|
},
|
|
}
|
|
)
|
|
|
|
brand: Optional[str] = field(
|
|
metadata={
|
|
'data_key': 'brand_raw',
|
|
'metadata': {
|
|
'description': 'CPU brand string',
|
|
'example': 'Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz',
|
|
},
|
|
}
|
|
)
|
|
|
|
frequency_advertised: Optional[int] = field(
|
|
metadata={
|
|
'metadata': {
|
|
'description': 'Advertised CPU frequency, in Hz',
|
|
'example': 2400000000,
|
|
}
|
|
}
|
|
)
|
|
|
|
frequency_actual: Optional[int] = field(
|
|
metadata={
|
|
'metadata': {
|
|
'description': 'Actual CPU frequency, in Hz',
|
|
'example': 2350000000,
|
|
}
|
|
}
|
|
)
|
|
|
|
flags: List[str] = field(
|
|
metadata={
|
|
'metadata': {
|
|
'description': 'CPU flags',
|
|
'example': ['acpi', 'aes', 'cpuid'],
|
|
}
|
|
}
|
|
)
|
|
|
|
l1_instruction_cache_size: Optional[int] = field(
|
|
metadata={
|
|
'metadata': {
|
|
'description': 'Size of the L1 instruction cache, in bytes',
|
|
'example': 65536,
|
|
}
|
|
}
|
|
)
|
|
|
|
l1_data_cache_size: Optional[int] = field(
|
|
metadata={
|
|
'metadata': {
|
|
'description': 'Size of the L1 data cache, in bytes',
|
|
'example': 65536,
|
|
}
|
|
}
|
|
)
|
|
|
|
l2_cache_size: Optional[int] = field(
|
|
metadata={
|
|
'metadata': {
|
|
'description': 'Size of the L2 cache, in bytes',
|
|
'example': 524288,
|
|
}
|
|
}
|
|
)
|
|
|
|
l3_cache_size: Optional[int] = field(
|
|
metadata={
|
|
'metadata': {
|
|
'description': 'Size of the L2 cache, in bytes',
|
|
'example': 4194304,
|
|
}
|
|
}
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class CpuTimes:
|
|
"""
|
|
CPU times data class.
|
|
"""
|
|
|
|
user: Optional[float] = percent_field()
|
|
nice: Optional[float] = percent_field()
|
|
system: Optional[float] = percent_field()
|
|
idle: Optional[float] = percent_field()
|
|
iowait: Optional[float] = percent_field()
|
|
irq: Optional[float] = percent_field()
|
|
softirq: Optional[float] = percent_field()
|
|
steal: Optional[float] = percent_field()
|
|
guest: Optional[float] = percent_field()
|
|
guest_nice: Optional[float] = percent_field()
|
|
|
|
|
|
@dataclass
|
|
class CpuStats:
|
|
"""
|
|
CPU stats data class.
|
|
"""
|
|
|
|
ctx_switches: int
|
|
interrupts: int
|
|
soft_interrupts: int
|
|
syscalls: int
|
|
|
|
|
|
@dataclass
|
|
class CpuFrequency:
|
|
"""
|
|
CPU frequency data class.
|
|
"""
|
|
|
|
current: float
|
|
min: float
|
|
max: float
|
|
|
|
|
|
@dataclass
|
|
class Cpu:
|
|
"""
|
|
CPU data aggregate dataclass.
|
|
"""
|
|
|
|
info: CpuInfo
|
|
times: CpuTimes
|
|
frequency: CpuFrequency
|
|
stats: CpuStats
|
|
load_avg: Tuple[float, float, float]
|
|
percent: float = percent_field()
|