| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /**
- * system_monitor.h - 系统资源监控(CPU/内存/温度/磁盘)
- * fix24 v24: Web管理功能批次
- */
- #ifndef SYSTEM_MONITOR_H
- #define SYSTEM_MONITOR_H
- #include <string>
- #include <vector>
- struct SystemStatus {
- // CPU
- double cpu_usage_percent; // CPU 使用率 (%)
- int cpu_core_count; // CPU 核心数
- std::vector<double> cpu_per_core; // 每核使用率
- double cpu_load_1min; // 1分钟负载
- double cpu_load_5min; // 5分钟负载
- double cpu_load_15min; // 15分钟负载
- // 内存
- long mem_total_mb; // 总内存 (MB)
- long mem_used_mb; // 已用内存 (MB)
- long mem_available_mb; // 可用内存 (MB)
- double mem_usage_percent; // 内存使用率 (%)
- // 温度
- double cpu_temp; // CPU 温度 (°C)
- bool temp_available; // 温度传感器是否可用
- // 磁盘
- long disk_total_gb; // 磁盘总容量 (GB)
- long disk_used_gb; // 已用 (GB)
- long disk_available_gb; // 可用 (GB)
- double disk_usage_percent; // 磁盘使用率 (%)
- // 系统信息
- std::string hostname;
- std::string kernel_version;
- std::string uptime_string;
- long uptime_seconds;
- // 进程信息
- int plate_rec_pid;
- long plate_rec_rss_mb; // PlateRecApp 内存占用 (MB)
- double plate_rec_cpu_percent; // PlateRecApp CPU 占用 (%)
- };
- namespace sysmon {
- // 获取系统状态快照
- SystemStatus get_system_status();
- // 获取 CPU 使用率(两次采样差值计算)
- double get_cpu_usage(int sample_ms = 200);
- // 获取 CPU 温度(从 /sys/class/thermal)
- double get_cpu_temperature();
- // 获取内存信息(从 /proc/meminfo)
- void get_memory_info(long &total_mb, long &used_mb, long &avail_mb, double &percent);
- // 获取磁盘信息
- void get_disk_info(const std::string &path, long &total_gb, long &used_gb, long &avail_gb, double &percent);
- // 获取系统启动时间
- std::string get_uptime_str(long &seconds);
- // 获取负载均值
- void get_load_avg(double &load1, double &load5, double &load15);
- // 获取当前进程资源占用
- void get_process_resource(int pid, long &rss_mb, double &cpu_percent);
- // 格式化文件大小
- std::string format_size(long mb);
- } // namespace sysmon
- #endif // SYSTEM_MONITOR_H
|