-
Notifications
You must be signed in to change notification settings - Fork 849
Add metering for baseline resource quotas #7080
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add metering for baseline resource quotas #7080
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds metering for baseline resource quotas (CPU and memory request utilization) in the resource monitoring library. The implementation provides new observable gauge metrics that track resource consumption relative to baseline/requested allocations (as opposed to the existing limit-based metrics), which is particularly useful for Kubernetes environments where requests represent guaranteed minimum resources.
Key Changes
- Added
ContainerCpuRequestUtilizationandContainerMemoryRequestUtilizationinstrument constants - Implemented CPU and memory request utilization metrics in both Windows and Linux resource monitoring providers
- Updated logging methods to distinguish between limit and request utilization calculations
- Extended test coverage to validate the new request-based metrics
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Shared/Instruments/ResourceUtilizationInstruments.cs | Added two new instrument constant definitions for CPU and memory request utilization metrics |
| src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsContainerSnapshotProvider.cs | Implemented request utilization gauges, refactored CpuPercentage to accept denominator parameter, changed _memoryRequest field type from ulong to double, and improved precision by using original quota values instead of rounded doubles |
| src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Log.cs | Updated ContainerMemoryUsageData logging method to include both limit and request memory values |
| src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationProvider.cs | Added ContainerMemoryRequestUtilization gauge, split MemoryPercentage into separate MemoryPercentageLimit and MemoryPercentageRequest methods, changed _memoryRequest field type from ulong to double, and improved precision by using original quota values |
| src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Log.cs | Renamed MemoryPercentageData to MemoryPercentageLimit and added new MemoryPercentageRequest logging method for request-based utilization |
| test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Windows/WindowsContainerSnapshotProviderTests.cs | Extended test coverage with InlineData test cases for CPU and memory request utilization metrics |
| test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/LinuxUtilizationProviderTests.cs | Updated test to reflect the addition of ContainerMemoryRequestUtilization metric (increased expected call count from 3 to 4) |
...rosoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsContainerSnapshotProvider.cs
Show resolved
Hide resolved
src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Log.cs
Outdated
Show resolved
Hide resolved
...raries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationProvider.cs
Show resolved
Hide resolved
...rosoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsContainerSnapshotProvider.cs
Show resolved
Hide resolved
...raries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationProvider.cs
Show resolved
Hide resolved
… bug with emitting metrics without wall time passing on Linux
Second part of addressing #6496
Microsoft Reviewers: Open in CodeFlow