Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions Lite/Controls/ServerTab.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -801,7 +801,7 @@
}

var tz = ServerTimeHelper.GetTimezoneLabel(ServerTimeHelper.CurrentDisplayMode);
ConnectionStatusText.Text = $"{_server.ServerNameDisplay} - Last refresh: {DateTime.Now:HH:mm:ss} ({tz})";

Check warning on line 804 in Lite/Controls/ServerTab.xaml.cs

View workflow job for this annotation

GitHub Actions / build

Dereference of a possibly null reference.

Check warning on line 804 in Lite/Controls/ServerTab.xaml.cs

View workflow job for this annotation

GitHub Actions / build

Dereference of a possibly null reference.
}
catch (Exception ex)
{
Expand Down Expand Up @@ -1121,15 +1121,16 @@
{
var cpuTask = SafeQueryAsync(() => _dataService.GetCpuUtilizationAsync(_serverId, hoursBack, fromDate, toDate));
var memoryTask = SafeQueryAsync(() => _dataService.GetMemoryTrendAsync(_serverId, hoursBack, fromDate, toDate));
var memoryGrantTask = SafeQueryAsync(() => _dataService.GetMemoryGrantTrendAsync(_serverId, hoursBack, fromDate, toDate));
var fileIoTask = SafeQueryAsync(() => _dataService.GetFileIoLatencyTrendAsync(_serverId, hoursBack, fromDate, toDate));

// Get top 5 wait types then fetch trends for each
var waitStats = await SafeQueryAsync(() => _dataService.GetWaitStatsAsync(_serverId, hoursBack, fromDate, toDate));
var topWaits = waitStats.Take(5).Select(w => w.WaitType).ToList();
await System.Threading.Tasks.Task.WhenAll(cpuTask, memoryTask, fileIoTask);
await System.Threading.Tasks.Task.WhenAll(cpuTask, memoryTask, memoryGrantTask, fileIoTask);

UpdateOverviewCpuChart(cpuTask.Result);
UpdateOverviewMemoryChart(memoryTask.Result);
UpdateOverviewMemoryChart(memoryTask.Result, memoryGrantTask.Result);
UpdateOverviewFileIoChart(fileIoTask.Result);
await UpdateOverviewWaitStatsChartAsync(topWaits, hoursBack, fromDate, toDate);
}
Expand Down Expand Up @@ -1164,7 +1165,7 @@
OverviewCpuChart.Refresh();
}

private void UpdateOverviewMemoryChart(List<MemoryTrendPoint> data)
private void UpdateOverviewMemoryChart(List<MemoryTrendPoint> data, List<MemoryTrendPoint> grantData)
{
ClearChart(OverviewMemoryChart);
_overviewMemoryHover?.Clear();
Expand All @@ -1174,7 +1175,10 @@

var times = data.Select(d => d.CollectionTime.AddMinutes(UtcOffsetMinutes).ToOADate()).ToArray();
var bufferPool = data.Select(d => d.BufferPoolMb).ToArray();
var grants = data.Select(d => d.TotalGrantedMb).ToArray();

/* Use grant data from v_memory_grant_stats, aligned to memory trend timestamps */
var grantLookup = grantData.ToDictionary(d => d.CollectionTime, d => d.TotalGrantedMb);
var grants = data.Select(d => grantLookup.TryGetValue(d.CollectionTime, out var v) ? v : 0.0).ToArray();

var bpPlot = OverviewMemoryChart.Plot.Add.Scatter(times, bufferPool);
bpPlot.LegendText = "Buffer Pool";
Expand Down
Loading