Remove network monitoring features and related code; update GPU monitoring in dashboard for improved performance and clarity.

This commit is contained in:
Din
2025-08-08 11:45:48 +08:00
parent 35828f189c
commit 5ece1fbe27
6 changed files with 71 additions and 164 deletions
-100
View File
@@ -14,7 +14,6 @@ namespace ResourceMonitorService.Services
Task<MemoryUsage> GetMemoryUsageAsync();
Task<GpuUsage> GetGpuUsageAsync();
Task<List<DiskUsage>> GetDiskUsageAsync();
Task<NetworkUsage> GetNetworkUsageAsync();
Task<List<ProcessInfo>> GetTopProcessesAsync(int count = 10);
}
@@ -23,8 +22,6 @@ namespace ResourceMonitorService.Services
private readonly ILogger<ResourceMonitorService> _logger;
private readonly MonitoringSettings _settings;
private readonly Dictionary<string, PerformanceCounter> _counters;
private readonly Dictionary<string, long> _previousNetworkBytes;
private readonly Dictionary<string, DateTime> _previousNetworkTime;
private readonly Dictionary<string, long> _previousDiskBytes;
private readonly Dictionary<string, DateTime> _previousDiskTime;
private readonly Dictionary<string, int> _errorCounts;
@@ -35,8 +32,6 @@ namespace ResourceMonitorService.Services
_logger = logger;
_settings = settings.Value;
_counters = new Dictionary<string, PerformanceCounter>();
_previousNetworkBytes = new Dictionary<string, long>();
_previousNetworkTime = new Dictionary<string, DateTime>();
_previousDiskBytes = new Dictionary<string, long>();
_previousDiskTime = new Dictionary<string, DateTime>();
_errorCounts = new Dictionary<string, int>();
@@ -52,12 +47,6 @@ namespace ResourceMonitorService.Services
_counters["cpu"] = new PerformanceCounter("Processor", "% Processor Time", "_Total");
_counters["memory_available"] = new PerformanceCounter("Memory", "Available MBytes");
if (_settings.EnableNetworkMonitoring)
{
_counters["network_bytes_sent"] = new PerformanceCounter("Network Interface", "Bytes Sent/sec", "*");
_counters["network_bytes_received"] = new PerformanceCounter("Network Interface", "Bytes Received/sec", "*");
}
if (_settings.EnableDiskMonitoring)
{
_counters["disk_read"] = new PerformanceCounter("PhysicalDisk", "Disk Read Bytes/sec", "_Total");
@@ -119,9 +108,6 @@ namespace ResourceMonitorService.Services
if (_settings.EnableDiskMonitoring)
tasks.Add(Task.Run(async () => await GetDiskUsageAsync()));
if (_settings.EnableNetworkMonitoring)
tasks.Add(Task.Run(async () => await GetNetworkUsageAsync()));
if (_settings.EnableProcessMonitoring)
tasks.Add(Task.Run(async () => await GetTopProcessesAsync(_settings.MaxProcessesToTrack)));
@@ -134,7 +120,6 @@ namespace ResourceMonitorService.Services
Memory = await GetMemoryUsageAsync(),
GPU = _settings.EnableGpuMonitoring ? await GetGpuUsageAsync() : new GpuUsage(),
Disks = _settings.EnableDiskMonitoring ? await GetDiskUsageAsync() : new List<DiskUsage>(),
Network = _settings.EnableNetworkMonitoring ? await GetNetworkUsageAsync() : new NetworkUsage(),
TopProcesses = _settings.EnableProcessMonitoring ? await GetTopProcessesAsync(_settings.MaxProcessesToTrack) : new List<ProcessInfo>(),
Temperature = _settings.EnableTemperatureMonitoring ? await GetTemperatureInfoAsync() : new TemperatureInfo()
};
@@ -654,91 +639,6 @@ namespace ResourceMonitorService.Services
return false;
}
public async Task<NetworkUsage> GetNetworkUsageAsync()
{
try
{
return await Task.Run(() =>
{
var networkUsage = new NetworkUsage();
var adapters = new List<NetworkAdapter>();
try
{
#pragma warning disable CA1416 // Validate platform compatibility
using var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface WHERE Name != 'Loopback'");
using var collection = searcher.Get();
foreach (ManagementObject obj in collection)
{
var name = obj["Name"]?.ToString() ?? "";
if (name.Contains("Loopback") || name.Contains("Isatap") || name.Contains("Teredo"))
continue;
var bytesSent = Convert.ToInt64(obj["BytesSentPerSec"] ?? 0);
var bytesReceived = Convert.ToInt64(obj["BytesReceivedPerSec"] ?? 0);
var timestamp = DateTime.Now;
var adapter = new NetworkAdapter
{
Name = name,
IsOperational = true
};
// Calculate speeds if we have previous data
var key = $"{name}_sent";
if (_previousNetworkBytes.ContainsKey(key) && _previousNetworkTime.ContainsKey(key))
{
var timeDiff = (timestamp - _previousNetworkTime[key]).TotalSeconds;
if (timeDiff > 0)
{
var bytesDiff = bytesSent - _previousNetworkBytes[key];
adapter.UploadSpeed = (float)(bytesDiff / timeDiff / (1024 * 1024)); // MB/s
networkUsage.UploadSpeed += adapter.UploadSpeed;
}
}
key = $"{name}_received";
if (_previousNetworkBytes.ContainsKey(key) && _previousNetworkTime.ContainsKey(key))
{
var timeDiff = (timestamp - _previousNetworkTime[key]).TotalSeconds;
if (timeDiff > 0)
{
var bytesDiff = bytesReceived - _previousNetworkBytes[key];
adapter.DownloadSpeed = (float)(bytesDiff / timeDiff / (1024 * 1024)); // MB/s
networkUsage.DownloadSpeed += adapter.DownloadSpeed;
}
}
// Store current values for next calculation
_previousNetworkBytes[$"{name}_sent"] = bytesSent;
_previousNetworkBytes[$"{name}_received"] = bytesReceived;
_previousNetworkTime[$"{name}_sent"] = timestamp;
_previousNetworkTime[$"{name}_received"] = timestamp;
networkUsage.BytesSent += (ulong)bytesSent;
networkUsage.BytesReceived += (ulong)bytesReceived;
adapters.Add(adapter);
}
#pragma warning restore CA1416 // Validate platform compatibility
}
catch (Exception ex)
{
_logger.LogWarning(ex, "Could not get network performance data");
}
networkUsage.Adapters = adapters;
return networkUsage;
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Error getting network usage");
return new NetworkUsage();
}
}
public async Task<List<ProcessInfo>> GetTopProcessesAsync(int count = 10)
{
try