Skip to content

Commit bc8ec17

Browse files
committed
logs for debugging heap size
1 parent 560464e commit bc8ec17

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/JvmOption.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
package org.elasticsearch.server.cli;
1111

12+
import org.apache.logging.log4j.LogManager;
13+
import org.apache.logging.log4j.Logger;
1214
import org.elasticsearch.common.Strings;
1315
import org.elasticsearch.core.SuppressForbidden;
1416

@@ -33,6 +35,8 @@ class JvmOption {
3335
private final String value;
3436
private final String origin;
3537

38+
private static final Logger logger = LogManager.getLogger(JvmOption.class);
39+
3640
JvmOption(String value, String origin) {
3741
if (origin == null) {
3842
throw new IllegalStateException(Strings.format("""
@@ -43,6 +47,11 @@ class JvmOption {
4347
this.origin = origin;
4448
}
4549

50+
@Override
51+
public String toString() {
52+
return "{value=" + value + ", origin=" + origin + "}";
53+
}
54+
4655
public Optional<String> getValue() {
4756
return Optional.ofNullable(value);
4857
}
@@ -124,6 +133,11 @@ private static List<String> flagsFinal(final List<String> userDefinedJvmOptions)
124133
);
125134
throw new RuntimeException(message);
126135
} else {
136+
for (String line : output) {
137+
if (line.contains("MaxHeapSize")) {
138+
logger.info("@@@ JvmOption flagsFinal: {}", line);
139+
}
140+
}
127141
return output;
128142
}
129143
}

distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/MachineDependentHeap.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99

1010
package org.elasticsearch.server.cli;
1111

12+
import org.apache.logging.log4j.LogManager;
13+
import org.apache.logging.log4j.Logger;
14+
import org.elasticsearch.cli.Terminal;
1215
import org.elasticsearch.cluster.node.DiscoveryNodeRole;
1316
import org.elasticsearch.common.settings.Settings;
1417
import org.elasticsearch.common.util.FeatureFlag;
@@ -40,7 +43,17 @@ public class MachineDependentHeap {
4043

4144
private static final FeatureFlag NEW_ML_MEMORY_COMPUTATION_FEATURE_FLAG = new FeatureFlag("new_ml_memory_computation");
4245

43-
public MachineDependentHeap() {}
46+
private static final Logger logger = LogManager.getLogger(MachineDependentHeap.class);
47+
48+
private final Terminal terminal;
49+
50+
public MachineDependentHeap() {
51+
this.terminal = null;
52+
}
53+
54+
public MachineDependentHeap(Terminal terminal) {
55+
this.terminal = terminal;
56+
}
4457

4558
/**
4659
* Calculate heap options.
@@ -57,6 +70,16 @@ public final List<String> determineHeapSettings(
5770
) throws IOException, InterruptedException {
5871
// TODO: this could be more efficient, to only parse final options once
5972
final Map<String, JvmOption> finalJvmOptions = JvmOption.findFinalOptions(userDefinedJvmOptions);
73+
if (terminal != null) {
74+
terminal.println(
75+
"@@@ MachineDependentHeap determineHeapSettings: MaxHeap="
76+
+ finalJvmOptions.get("MaxHeapSize")
77+
+ " FeatureFlag="
78+
+ NEW_ML_MEMORY_COMPUTATION_FEATURE_FLAG.isEnabled()
79+
);
80+
terminal.println("@@@ MachineDependentHeap determineHeapSettings: inference_default_elser_feature_flag="
81+
+ new FeatureFlag("inference_default_elser").isEnabled());
82+
}
6083
if (isMaxHeapSpecified(finalJvmOptions) || isMinHeapSpecified(finalJvmOptions) || isInitialHeapSpecified(finalJvmOptions)) {
6184
// User has explicitly set memory settings so we use those
6285
return Collections.emptyList();
@@ -65,6 +88,12 @@ public final List<String> determineHeapSettings(
6588
List<DiscoveryNodeRole> roles = NodeRoleSettings.NODE_ROLES_SETTING.get(nodeSettings);
6689
long availableSystemMemory = systemMemoryInfo.availableSystemMemory();
6790
MachineNodeRole nodeRole = mapNodeRole(roles);
91+
if (terminal != null) {
92+
terminal.println(
93+
"@@@ MachineDependentHeap determineHeapSettings: setMaxHeap: "
94+
+ getHeapSizeMb(nodeSettings, nodeRole, availableSystemMemory)
95+
);
96+
}
6897
return options(getHeapSizeMb(nodeSettings, nodeRole, availableSystemMemory));
6998
}
7099

distribution/tools/server-cli/src/main/java/org/elasticsearch/server/cli/ServerCli.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,8 +265,13 @@ protected Command loadTool(Map<String, String> sysprops, String toolname, String
265265

266266
// protected to allow tests to override
267267
protected ServerProcess startServer(Terminal terminal, ProcessInfo processInfo, ServerArgs args) throws Exception {
268+
terminal.println("@@@ ServerCli startServer");
269+
268270
var tempDir = ServerProcessUtils.setupTempDir(processInfo);
269271
var jvmOptions = JvmOptionsParser.determineJvmOptions(args, processInfo, tempDir, new MachineDependentHeap());
272+
273+
terminal.println("@@@ ServerCli startServer: jvmOptions=" + jvmOptions);
274+
270275
var serverProcessBuilder = new ServerProcessBuilder().withTerminal(terminal)
271276
.withProcessInfo(processInfo)
272277
.withServerArgs(args)

0 commit comments

Comments
 (0)