Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 433fb28

Browse files
authored
fix gc config - need to read from both runtime config and env var (#25890)
need to read hardlimit configs from env vars as well as runtimeconfig.json
1 parent c01a9a1 commit 433fb28

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/vm/eeconfig.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,8 @@ HRESULT EEConfig::Init()
179179
iGCHeapCount = 0;
180180
iGCNoAffinitize = 0;
181181
iGCAffinityMask = 0;
182+
iGCHeapHardLimit = 0;
183+
iGCHeapHardLimitPercent = 0;
182184

183185
#ifdef GCTRIMCOMMIT
184186
iGCTrimCommit = 0;
@@ -808,18 +810,20 @@ fTrackDynamicMethodDebugInfo = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_
808810
if (!iGCAffinityMask) iGCAffinityMask = Configuration::GetKnobULONGLONGValue(W("System.GC.HeapAffinitizeMask"));
809811
if (!iGCSegmentSize) iGCSegmentSize = GetConfigULONGLONG_DontUse_(CLRConfig::UNSUPPORTED_GCSegmentSize, iGCSegmentSize);
810812
if (!iGCgen0size) iGCgen0size = GetConfigULONGLONG_DontUse_(CLRConfig::UNSUPPORTED_GCgen0size, iGCgen0size);
813+
iGCHeapHardLimit = GetConfigULONGLONG_DontUse_(CLRConfig::EXTERNAL_GCHeapHardLimit, iGCHeapHardLimit);
814+
if (!iGCHeapHardLimit) iGCHeapHardLimit = Configuration::GetKnobULONGLONGValue(W("System.GC.HeapHardLimit"));
811815
#else
812816
iGCAffinityMask = GetConfigDWORD_DontUse_(CLRConfig::EXTERNAL_GCHeapAffinitizeMask, iGCAffinityMask);
813817
if (!iGCAffinityMask) iGCAffinityMask = Configuration::GetKnobDWORDValue(W("System.GC.HeapAffinitizeMask"), 0);
814818
if (!iGCSegmentSize) iGCSegmentSize = GetConfigDWORD_DontUse_(CLRConfig::UNSUPPORTED_GCSegmentSize, iGCSegmentSize);
815819
if (!iGCgen0size) iGCgen0size = GetConfigDWORD_DontUse_(CLRConfig::UNSUPPORTED_GCgen0size, iGCgen0size);
820+
iGCHeapHardLimit = GetConfigDWORD_DontUse_(CLRConfig::EXTERNAL_GCHeapHardLimit, iGCHeapHardLimit);
821+
if (!iGCHeapHardLimit) iGCHeapHardLimit = Configuration::GetKnobDWORDValue(W("System.GC.HeapHardLimit"), 0);
816822
#endif //_WIN64
817823

818-
const ULONGLONG ullHeapHardLimit = Configuration::GetKnobULONGLONGValue(W("System.GC.HeapHardLimit"));
819-
iGCHeapHardLimit = FitsIn<size_t, ULONGLONG>(ullHeapHardLimit)
820-
? static_cast<size_t>(ullHeapHardLimit)
821-
: ClrSafeInt<size_t>::MaxInt();
822-
iGCHeapHardLimitPercent = Configuration::GetKnobDWORDValue(W("System.GC.HeapHardLimitPercent"), 0);
824+
iGCHeapHardLimitPercent = GetConfigDWORD_DontUse_(CLRConfig::EXTERNAL_GCHeapHardLimitPercent, iGCHeapHardLimitPercent);
825+
if (!iGCHeapHardLimitPercent)
826+
iGCHeapHardLimitPercent = Configuration::GetKnobDWORDValue(W("System.GC.HeapHardLimitPercent"), 0);
823827

824828
if (g_IGCHoardVM)
825829
iGCHoardVM = g_IGCHoardVM;

0 commit comments

Comments
 (0)