Standardized support for filtering metrics using verbosity levels, inclusion and exclusion regex.#636
Standardized support for filtering metrics using verbosity levels, inclusion and exclusion regex.#636RakeshwarK wants to merge 14 commits intomicrosoft:mainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This PR introduces standardized metric filtering capabilities to the Virtual Client, allowing users to control which metrics are captured and logged using verbosity-based filtering, regex-based inclusion filtering, and exclusion filtering. The changes affect the Fio, DiskSpd, and Memtier workload parsers, along with core metric filtering infrastructure and comprehensive documentation.
Changes:
- Added comprehensive metric filtering documentation to the profiles guide with examples for verbosity, inclusion, and exclusion filtering
- Updated verbosity level definitions from the previous 0-2 scale to a new 1-5 scale (with only 1, 3, and 5 actively used in modified workloads)
- Enhanced MetricExtensions.FilterBy() to support verbosity filtering, exclusion filters (prefix with "-"), and regex-based name filtering
- Updated Fio, DiskSpd, and Memtier metric parsers to assign appropriate verbosity levels to metrics
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| website/docs/guides/0011-profiles.md | Added comprehensive documentation section on metric filtering including verbosity levels, regex patterns, exclusion filters, and combined filter examples |
| src/VirtualClient/VirtualClient.Contracts/Metric.cs | Updated XML documentation for Verbosity property to describe new 1-5 scale with detailed descriptions for each level |
| src/VirtualClient/VirtualClient.Contracts/Extensions/MetricExtensions.cs | Enhanced FilterBy() method to support verbosity filtering, exclusion filters, and inclusion filters; updated LogConsole() to use verbosity level 1 instead of 0 for critical metrics |
| src/VirtualClient/VirtualClient.Contracts.UnitTests/MetricExtensionsTests.cs | Added comprehensive test coverage for new filtering capabilities including verbosity levels, exclusion filters, and complex filter combinations |
| src/VirtualClient/VirtualClient.Actions/Memtier/MemtierMetricsParser.cs | Updated metric verbosity levels from 0-2 to 1/3/5 scale; added missing metricUnit to Hits/sec and Misses/sec metrics |
| src/VirtualClient/VirtualClient.Actions/FIO/FioMetricsParser.cs | Updated all FIO metrics to use new verbosity levels: 1 for critical metrics (bandwidth, IOPS, p50/p99), 3 for detailed percentiles (p70, p90, p99.9), and 5 for diagnostic metrics (histograms, stddev, byte/IO counts) |
| src/VirtualClient/VirtualClient.Actions/DiskSpd/DiskSpdMetricsParser.cs | Updated DiskSpd metrics to use new verbosity levels: 1 for critical metrics (bandwidth, IOPS, latency percentiles), 5 for diagnostic metrics (CPU usage, byte/IO counts) |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/VirtualClient/VirtualClient.Contracts/Extensions/MetricExtensions.cs
Outdated
Show resolved
Hide resolved
src/VirtualClient/VirtualClient.Contracts/Extensions/MetricExtensions.cs
Show resolved
Hide resolved
src/VirtualClient/VirtualClient.Contracts/Extensions/MetricExtensions.cs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 27 out of 27 changed files in this pull request and generated 5 comments.
Comments suppressed due to low confidence (1)
src/VirtualClient/VirtualClient.Actions/ASPNET/BombardierMetricsParser.cs:51
- Lines 47-51 create metrics without specifying a verbosity level. According to the new standardization, these metrics will default to verbosity level 1. However, some of these percentile metrics (P50, P75, P90, P95, P99) should likely have explicit verbosity levels assigned for consistency with the rest of the codebase.
Based on the pattern in this file and others:
- P50 and P99 should be level 1 (critical percentiles)
- P75, P90, P95 should be level 2 (detailed percentiles)
This should be made explicit to match the verbosity assignment pattern seen elsewhere in the PR.
this.metrics.Add(new Metric("RequestPerSecond P50", root.Result.Rps.Percentiles.P50, MetricUnit.RequestsPerSec, MetricRelativity.HigherIsBetter));
this.metrics.Add(new Metric("RequestPerSecond P75", root.Result.Rps.Percentiles.P75, MetricUnit.RequestsPerSec, MetricRelativity.HigherIsBetter));
this.metrics.Add(new Metric("RequestPerSecond P90", root.Result.Rps.Percentiles.P90, MetricUnit.RequestsPerSec, MetricRelativity.HigherIsBetter));
this.metrics.Add(new Metric("RequestPerSecond P95", root.Result.Rps.Percentiles.P95, MetricUnit.RequestsPerSec, MetricRelativity.HigherIsBetter));
this.metrics.Add(new Metric("RequestPerSecond P99", root.Result.Rps.Percentiles.P99, MetricUnit.RequestsPerSec, MetricRelativity.HigherIsBetter));
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/VirtualClient/VirtualClient.Contracts/Extensibility/MetricDataPoint.cs
Outdated
Show resolved
Hide resolved
src/VirtualClient/VirtualClient.Actions.UnitTests/3DMark/ThreeDMarkMetricsParserTests.cs
Outdated
Show resolved
Hide resolved
src/VirtualClient/VirtualClient.Contracts/Extensions/MetricExtensions.cs
Show resolved
Hide resolved
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Rakesh <153008248+RakeshwarK@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Rakesh <153008248+RakeshwarK@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Rakesh <153008248+RakeshwarK@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 26 out of 26 changed files in this pull request and generated 5 comments.
Comments suppressed due to low confidence (1)
src/VirtualClient/VirtualClient.Actions/ASPNET/BombardierMetricsParser.cs:51
- The RequestPerSecond percentile metrics (P50, P75, P90, P95, P99) don't specify verbosity levels and will default to verbosity: 1. For consistency with the Latency metrics above (lines 38-42), consider setting P75, P90, and P95 to verbosity: 2, keeping only P50 and P99 at the default verbosity: 1 for critical percentiles.
this.metrics.Add(new Metric("RequestPerSecond P50", root.Result.Rps.Percentiles.P50, MetricUnit.RequestsPerSec, MetricRelativity.HigherIsBetter));
this.metrics.Add(new Metric("RequestPerSecond P75", root.Result.Rps.Percentiles.P75, MetricUnit.RequestsPerSec, MetricRelativity.HigherIsBetter));
this.metrics.Add(new Metric("RequestPerSecond P90", root.Result.Rps.Percentiles.P90, MetricUnit.RequestsPerSec, MetricRelativity.HigherIsBetter));
this.metrics.Add(new Metric("RequestPerSecond P95", root.Result.Rps.Percentiles.P95, MetricUnit.RequestsPerSec, MetricRelativity.HigherIsBetter));
this.metrics.Add(new Metric("RequestPerSecond P99", root.Result.Rps.Percentiles.P99, MetricUnit.RequestsPerSec, MetricRelativity.HigherIsBetter));
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/VirtualClient/VirtualClient.Contracts/Extensibility/MetricDataPoint.cs
Outdated
Show resolved
Hide resolved
src/VirtualClient/VirtualClient.Actions/Memtier/MemtierMetricsParser.cs
Outdated
Show resolved
Hide resolved
src/VirtualClient/VirtualClient.Actions/FIO/FioMetricsParser.cs
Outdated
Show resolved
Hide resolved
…DataPoint.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Rakesh <153008248+RakeshwarK@users.noreply.github.com>
No description provided.