Skip to content

Issue #281 Gaps 1+2: Memory grant charts + File I/O throughput/latency/queued overlay#285

Merged
erikdarlingdata merged 2 commits intodevfrom
feature/issue-281-memory-grant-charts
Feb 25, 2026
Merged

Issue #281 Gaps 1+2: Memory grant charts + File I/O throughput/latency/queued overlay#285
erikdarlingdata merged 2 commits intodevfrom
feature/issue-281-memory-grant-charts

Conversation

@erikdarlingdata
Copy link
Owner

Closes #281 (Gaps 1 and 2)

Summary

  • Gap 1 (memory_grant_stats): Add memory grant stats charts to both apps — active grants, queued, memory pressure trend
  • Gap 2 (file_io_stats): Add File I/O throughput charts, switch Lite latency to file-level, add queued I/O overlay

Changes

Both apps

  • Add "File I/O Throughput" sub-tab with read/write MB/s charts per file (top 10 by bytes)
  • Restructure "File I/O" tab into "File I/O Latency" and "File I/O Throughput" sub-tabs
  • Add queued I/O overlay (dashed lines) on latency charts showing OS queue wait time

Lite-specific

  • Memory grants tab with active grants, queued requests, and memory grant trend charts
  • Switch File I/O latency charts from database-level to file-level (top 10 by I/O activity)
  • Collect io_stall_queued_read/write_ms from sys.dm_io_virtual_file_stats
  • DuckDB schema v15 migration adds queued stall columns to file_io_stats
  • Use DuckDB LAG() window function for throughput MB/s interval calculation

Dashboard-specific

  • Memory grants trend chart added to Resource Metrics tab
  • Fix double-brace interpolation bug in GetFileIoThroughputTimeSeriesAsync that caused empty throughput charts

CI fix

  • Update 50_configuration_issues_analyzer.sql and 97_test_procedures.sql to remove references to warning columns dropped from collect.memory_grant_stats in Gap 1

Test plan

  • Dashboard: Resource Metrics → File I/O → "File I/O Latency" sub-tab shows per-file latency with queued I/O dashed overlay
  • Dashboard: Resource Metrics → File I/O → "File I/O Throughput" sub-tab shows read/write MB/s per file
  • Lite: File I/O → "File I/O Latency" sub-tab shows per-file (not per-database) latency with queued overlay
  • Lite: File I/O → "File I/O Throughput" sub-tab shows read/write MB/s per file
  • CI passes (configuration issues analyzer + test procedures use updated column references)

🤖 Generated with Claude Code

erikdarlingdata and others added 2 commits February 25, 2026 12:00
…ued I/O overlay

**New features (both apps):**
- Add "File I/O Throughput" sub-tab with read/write MB/s charts per file
- Restructure "File I/O" tab into "File I/O Latency" and "File I/O Throughput" sub-tabs
- Add queued I/O overlay (dashed lines) to latency charts showing OS queue wait time

**Lite-specific:**
- Switch File I/O latency charts from database-level to file-level (top 10 by activity)
- Add io_stall_queued_read/write columns to DuckDB schema (v15 migration)
- Update collector to collect queued stall data from sys.dm_io_virtual_file_stats
- Use DuckDB LAG() window function for throughput MB/s interval calculation

**Dashboard-specific:**
- Fix double-brace interpolation bug in GetFileIoThroughputTimeSeriesAsync
  ({{dbFilter}}/{{dateFilter}} produced literal text instead of interpolating variables)

**CI fix:**
- Update 50_configuration_issues_analyzer.sql and 97_test_procedures.sql to remove
  references to warning columns dropped from collect.memory_grant_stats in Gap 1

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove collect.session_wait_stats entirely — table, collector procedure,
reporting view, schedule entries, schema metadata, CI checks, and all
references. This collector had 12 columns and zero UI in either app.

Adds cleanup DROPs to 02_create_tables.sql so existing installations
get cleaned up on upgrade (drops view, procedure, table, schedule row).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit 4bdbc6d into dev Feb 25, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant