监控模块 优化

This commit is contained in:
zhongluofeng
2026-07-24 18:16:34 +08:00
parent e8267c244f
commit 7e6149355e
15 changed files with 2148 additions and 234 deletions
+31 -12
View File
@@ -26,6 +26,7 @@ internal sealed class HardwareManager : IDisposable
private readonly Stopwatch _startupSw;
private bool _ready;
private bool _closed;
private HardwareConfig _config;
// 缓存"哪个硬件属于快通道"——按 hardware type 判断更稳定(不同机型传感器命名不一致)
// 实际分频逻辑见 SamplingScheduler,此处只暴露硬件列表给调度器
@@ -34,24 +35,31 @@ internal sealed class HardwareManager : IDisposable
public bool IsAdmin => _isAdmin;
public double ColdStartMs => _coldStartMs;
public bool Ready => _ready;
public HardwareConfig Config => _config;
public HardwareManager(bool basic)
public HardwareManager(HardwareConfig config)
{
_config = config ?? HardwareConfig.Default;
_isAdmin = IsRunningAsAdmin();
_startupSw = Stopwatch.StartNew();
// LHB 行为:主板的传感器实际通过 SubHardwareSuperIO/EC)暴露,
// 而 SuperIO 作为顶层硬件时需 IsControllerEnabled 才能枚举。
// 联动策略:启用 motherboard 时自动启用 controller,避免主板勾选后无数据。
bool motherboardEnabled = _config.IsHardwareEnabled("motherboard");
bool controllerEnabled = _config.IsHardwareEnabled("controller") || motherboardEnabled;
_computer = new Computer
{
IsCpuEnabled = true,
IsGpuEnabled = true,
IsMemoryEnabled = true,
IsStorageEnabled = true,
// basic 模式只开核心四类硬件(CPU/GPU/RAM/Storage),降低冷启动耗时
IsMotherboardEnabled = !basic,
IsControllerEnabled = !basic,
IsBatteryEnabled = !basic,
IsNetworkEnabled = !basic,
IsPsuEnabled = !basic,
IsCpuEnabled = _config.IsHardwareEnabled("cpu"),
IsGpuEnabled = _config.IsHardwareEnabled("gpu"),
IsMemoryEnabled = _config.IsHardwareEnabled("memory"),
IsStorageEnabled = _config.IsHardwareEnabled("storage"),
IsMotherboardEnabled = motherboardEnabled,
IsControllerEnabled = controllerEnabled,
IsBatteryEnabled = _config.IsHardwareEnabled("battery"),
IsNetworkEnabled = _config.IsHardwareEnabled("network"),
IsPsuEnabled = _config.IsHardwareEnabled("psu"),
};
_computer.Open();
@@ -68,6 +76,12 @@ internal sealed class HardwareManager : IDisposable
_ready = true;
}
/// <summary>热更新传感器类型过滤(无需重启 Kernel,下次 BuildSnapshot 生效)</summary>
public void UpdateConfig(HardwareConfig newConfig)
{
_config = newConfig;
}
/// <summary>
/// 全量 Update 所有硬件。
/// 由 SamplingScheduler 按通道分频调用。
@@ -130,11 +144,16 @@ internal sealed class HardwareManager : IDisposable
foreach (var s in hw.Sensors)
{
// 按配置过滤传感器类型:关闭的类型不加入快照,减少传输数据量
string sensorType = s.SensorType.ToString().ToLowerInvariant();
if (!_config.IsSensorTypeEnabled(sensorType))
continue;
g.Sensors.Add(new SensorEntry
{
Id = $"{groupId}/{hw.Name}/{s.SensorType}/{s.Name}".Replace(' ', '_').ToLowerInvariant(),
Name = s.Name,
Type = s.SensorType.ToString().ToLowerInvariant(),
Type = sensorType,
Value = s.Value,
Unit = UnitFor(s.SensorType),
HardwareName = hw.Name,