diff options
author | Andy Hanson <anhans@microsoft.com> | 2019-07-08 16:12:06 -0700 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2019-07-08 16:12:06 -0700 |
commit | 11137fbe46f524dfd6c2f7bb2a77035aa225524c (patch) | |
tree | 116160fa9d0ed8c8cb2fa1cb6ac407e476ab96cf /src/gc/gc.cpp | |
parent | 8749c016e520bcaa23c56a862fe5f57eba1b879b (diff) | |
download | coreclr-11137fbe46f524dfd6c2f7bb2a77035aa225524c.tar.gz coreclr-11137fbe46f524dfd6c2f7bb2a77035aa225524c.tar.bz2 coreclr-11137fbe46f524dfd6c2f7bb2a77035aa225524c.zip |
Return HardLimitBytes from GCMemoryInfo.TotalAvailableMemoryBytes (#25437)
* Add property HardLimitBytes to GCMemoryInfo
This adds a new property HardLimitBytes.
Unlike TotalAvailableMemoryBytes,
this will reflect an explicitly set COMPLUS_GCHeapHardLimit.
It will also reflect the fraction of a container's size that we use,
where TotalAvailableMemoryBytes is the total container size.
Normally, though, it is equal to TotalAvailableMemoryBytes.
Fix #38821
* Remove HardLimitBytes; have TotalAvailableMemoryBytes take on its behavior
* Fix typos
* Separate total_physical_mem and heap_hard_limit
so we can compute highMemoryLoadThresholdBytes and memoryLoadBytes
* Do more work in gc.cpp instead of Gc.cs
* Consistently end names in "Bytes"
Diffstat (limited to 'src/gc/gc.cpp')
-rw-r--r-- | src/gc/gc.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/gc/gc.cpp b/src/gc/gc.cpp index f4d877fe88..f107b134ca 100644 --- a/src/gc/gc.cpp +++ b/src/gc/gc.cpp @@ -36814,17 +36814,19 @@ unsigned int GCHeap::GetCondemnedGeneration() return gc_heap::settings.condemned_generation; } -void GCHeap::GetMemoryInfo(uint32_t* highMemLoadThreshold, - uint64_t* totalPhysicalMem, - uint32_t* lastRecordedMemLoad, - size_t* lastRecordedHeapSize, - size_t* lastRecordedFragmentation) -{ - *highMemLoadThreshold = gc_heap::high_memory_load_th; - *totalPhysicalMem = gc_heap::total_physical_mem; - *lastRecordedMemLoad = gc_heap::last_gc_memory_load; - *lastRecordedHeapSize = gc_heap::last_gc_heap_size; - *lastRecordedFragmentation = gc_heap::last_gc_fragmentation; +void GCHeap::GetMemoryInfo(uint64_t* highMemLoadThresholdBytes, + uint64_t* totalAvailableMemoryBytes, + uint64_t* lastRecordedMemLoadBytes, + uint32_t* lastRecordedMemLoadPct, + size_t* lastRecordedHeapSizeBytes, + size_t* lastRecordedFragmentationBytes) +{ + *highMemLoadThresholdBytes = (uint64_t) (((double)gc_heap::high_memory_load_th) / 100 * gc_heap::total_physical_mem); + *totalAvailableMemoryBytes = gc_heap::heap_hard_limit != 0 ? gc_heap::heap_hard_limit : gc_heap::total_physical_mem; + *lastRecordedMemLoadBytes = (uint64_t) (((double)gc_heap::last_gc_memory_load) / 100 * gc_heap::total_physical_mem); + *lastRecordedMemLoadPct = gc_heap::last_gc_memory_load; + *lastRecordedHeapSizeBytes = gc_heap::last_gc_heap_size; + *lastRecordedFragmentationBytes = gc_heap::last_gc_fragmentation; } int GCHeap::GetGcLatencyMode() |