@@ -40,6 +40,8 @@ public class MachineDependentHeap {
4040
4141 private static final FeatureFlag NEW_ML_MEMORY_COMPUTATION_FEATURE_FLAG = new FeatureFlag ("new_ml_memory_computation" );
4242
43+ private boolean useNewMlMemoryComputation = false ;
44+
4345 public MachineDependentHeap () {}
4446
4547 /**
@@ -55,6 +57,11 @@ public final List<String> determineHeapSettings(
5557 SystemMemoryInfo systemMemoryInfo ,
5658 List <String > userDefinedJvmOptions
5759 ) throws IOException , InterruptedException {
60+ if (userDefinedJvmOptions .contains ("-Des.new_ml_memory_computation_feature_flag_enabled=true" )
61+ || NEW_ML_MEMORY_COMPUTATION_FEATURE_FLAG .isEnabled ()) {
62+ useNewMlMemoryComputation = true ;
63+ }
64+
5865 // TODO: this could be more efficient, to only parse final options once
5966 final Map <String , JvmOption > finalJvmOptions = JvmOption .findFinalOptions (userDefinedJvmOptions );
6067 if (isMaxHeapSpecified (finalJvmOptions ) || isMinHeapSpecified (finalJvmOptions ) || isInitialHeapSpecified (finalJvmOptions )) {
@@ -107,7 +114,7 @@ protected int getHeapSizeMb(Settings nodeSettings, MachineNodeRole role, long av
107114 case ML_ONLY -> {
108115 double heapFractionBelow16GB = 0.4 ;
109116 double heapFractionAbove16GB = 0.1 ;
110- if (NEW_ML_MEMORY_COMPUTATION_FEATURE_FLAG . isEnabled () ) {
117+ if (useNewMlMemoryComputation ) {
111118 heapFractionBelow16GB = 0.4 / (1.0 + JvmErgonomics .DIRECT_MEMORY_TO_HEAP_FACTOR );
112119 heapFractionAbove16GB = 0.1 / (1.0 + JvmErgonomics .DIRECT_MEMORY_TO_HEAP_FACTOR );
113120 }
0 commit comments