监控模块 优化
This commit is contained in:
+31
-12
@@ -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 行为:主板的传感器实际通过 SubHardware(SuperIO/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,
|
||||
|
||||
Reference in New Issue
Block a user