From 65969cb4a03a18b11fc7cb20b37af7fb1771b29b Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Fri, 5 Jul 2019 16:31:55 -0700 Subject: [PATCH 1/3] System.GC.HeapHardLimit and .HeapHardLimitPercent in runtimeconfig.json This adds two new configuration options, "System.GC.HeapHardLimit" and "System.GC.HeapHardLimitPercent" to runtimeconfig.json. These behave the same as COMPlus_GCHeapHardLimit and COMPlus_GCHeapHardLimitPercent. --- src/vm/eeconfig.cpp | 3 +++ src/vm/eeconfig.h | 4 ++++ src/vm/gcenv.ee.cpp | 12 ++++++++++++ 3 files changed, 19 insertions(+) diff --git a/src/vm/eeconfig.cpp b/src/vm/eeconfig.cpp index e3b9d8a19659..01bd0d7cac61 100644 --- a/src/vm/eeconfig.cpp +++ b/src/vm/eeconfig.cpp @@ -815,6 +815,9 @@ fTrackDynamicMethodDebugInfo = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_ if (!iGCgen0size) iGCgen0size = GetConfigDWORD_DontUse_(CLRConfig::UNSUPPORTED_GCgen0size, iGCgen0size); #endif //_WIN64 + iGCHeapHardLimit = Configuration::GetKnobULONGLONGValue(W("System.GC.HeapHardLimit")); + iGCHeapHardLimitPercent = Configuration::GetKnobDWORDValue(W("System.GC.HeapHardLimitPercent"), 0); + if (g_IGCHoardVM) iGCHoardVM = g_IGCHoardVM; else diff --git a/src/vm/eeconfig.h b/src/vm/eeconfig.h index 4d806508f8a9..928bac046d8e 100644 --- a/src/vm/eeconfig.h +++ b/src/vm/eeconfig.h @@ -613,6 +613,8 @@ class EEConfig int GetGCHeapCount() const {LIMITED_METHOD_CONTRACT; return iGCHeapCount;} int GetGCNoAffinitize () const {LIMITED_METHOD_CONTRACT; return iGCNoAffinitize;} size_t GetGCAffinityMask() const {LIMITED_METHOD_CONTRACT; return iGCAffinityMask;} + size_t GetGCHeapHardLimit() const {LIMITED_METHOD_CONTRACT; return iGCHeapHardLimit;} + int GetGCHeapHardLimitPercent() const {LIMITED_METHOD_CONTRACT; return iGCHeapHardLimitPercent;} #ifdef GCTRIMCOMMIT @@ -918,6 +920,8 @@ class EEConfig int iGCHeapCount; int iGCNoAffinitize; size_t iGCAffinityMask; + size_t iGCHeapHardLimit; + int iGCHeapHardLimitPercent; #ifdef GCTRIMCOMMIT diff --git a/src/vm/gcenv.ee.cpp b/src/vm/gcenv.ee.cpp index e4d3153732a0..a0cd5a990f53 100644 --- a/src/vm/gcenv.ee.cpp +++ b/src/vm/gcenv.ee.cpp @@ -1097,6 +1097,18 @@ bool GCToEEInterface::GetIntConfigValue(const char* key, int64_t* value) return true; } + if (strcmp(key, "GCHeapHardLimit") == 0) + { + *value = g_pConfig->GetGCHeapHardLimit(); + return true; + } + + if (strcmp(key, "GCHeapHardLimitPercent") == 0) + { + *value = g_pConfig->GetGCHeapHardLimitPercent(); + return true; + } + if (strcmp(key, "GCLOHThreshold") == 0) { *value = g_pConfig->GetGCLOHThreshold(); From 09e3d0476cbea0d59b87d0fb7292b68c588592d0 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Mon, 8 Jul 2019 12:11:55 -0700 Subject: [PATCH 2/3] Add cast --- src/vm/eeconfig.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vm/eeconfig.cpp b/src/vm/eeconfig.cpp index 01bd0d7cac61..ff2f6fedfc79 100644 --- a/src/vm/eeconfig.cpp +++ b/src/vm/eeconfig.cpp @@ -815,7 +815,8 @@ fTrackDynamicMethodDebugInfo = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_ if (!iGCgen0size) iGCgen0size = GetConfigDWORD_DontUse_(CLRConfig::UNSUPPORTED_GCgen0size, iGCgen0size); #endif //_WIN64 - iGCHeapHardLimit = Configuration::GetKnobULONGLONGValue(W("System.GC.HeapHardLimit")); + const ULONGLONG ullHeapHardLimit = Configuration::GetKnobULONGLONGValue(W("System.GC.HeapHardLimit")); + iGCHeapHardLimit = FitsIn(ullHeapHardLimit) ? static_cast(ullHeapHardLimit) : ClrSafeInt::MaxInt(); iGCHeapHardLimitPercent = Configuration::GetKnobDWORDValue(W("System.GC.HeapHardLimitPercent"), 0); if (g_IGCHoardVM) From 4970a8bc629c5c75edf15497319f4f30e490ae4b Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Wed, 10 Jul 2019 16:12:56 -0700 Subject: [PATCH 3/3] Dummy change to trigger tests rerun --- src/vm/eeconfig.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/vm/eeconfig.cpp b/src/vm/eeconfig.cpp index ff2f6fedfc79..cdf2411bc1db 100644 --- a/src/vm/eeconfig.cpp +++ b/src/vm/eeconfig.cpp @@ -816,7 +816,9 @@ fTrackDynamicMethodDebugInfo = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_ #endif //_WIN64 const ULONGLONG ullHeapHardLimit = Configuration::GetKnobULONGLONGValue(W("System.GC.HeapHardLimit")); - iGCHeapHardLimit = FitsIn(ullHeapHardLimit) ? static_cast(ullHeapHardLimit) : ClrSafeInt::MaxInt(); + iGCHeapHardLimit = FitsIn(ullHeapHardLimit) + ? static_cast(ullHeapHardLimit) + : ClrSafeInt::MaxInt(); iGCHeapHardLimitPercent = Configuration::GetKnobDWORDValue(W("System.GC.HeapHardLimitPercent"), 0); if (g_IGCHoardVM)