diff --git a/freqtrade/rpc/api_server/api_schemas.py b/freqtrade/rpc/api_server/api_schemas.py index 005f092bb..a3de56cc1 100644 --- a/freqtrade/rpc/api_server/api_schemas.py +++ b/freqtrade/rpc/api_server/api_schemas.py @@ -697,8 +697,17 @@ class MarketResponse(BaseModel): exchange_id: str +class CpuInfo(BaseModel): + cpu: int + pct: float + + class SysInfo(BaseModel): cpu_pct: list[float] + cpu_load: list[CpuInfo] + cpu_load_avg: dict[str, float] + cpu_count: int + cpu_avg: float ram_pct: float diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 38d4eb49f..b547bf45f 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -1736,8 +1736,24 @@ class RPC: @staticmethod def _rpc_sysinfo() -> dict[str, Any]: + cpu_pct = psutil.cpu_percent(interval=0.1, percpu=True) + load_avg = psutil.getloadavg() return { - "cpu_pct": psutil.cpu_percent(interval=1, percpu=True), + "cpu_pct": cpu_pct, + "cpu_load": [ + { + "cpu": idx, + "pct": pct, + } + for idx, pct in enumerate(cpu_pct) + ], + "cpu_avg": sum(cpu_pct) / len(cpu_pct) if cpu_pct else 0.0, + "cpu_load_avg": { + "1m": load_avg[0], + "5m": load_avg[1], + "15m": load_avg[2], + }, + "cpu_count": len(cpu_pct), "ram_pct": psutil.virtual_memory().percent, }