Skip to content

Commit

Permalink
Sort OOM killer log output
Browse files Browse the repository at this point in the history
  • Loading branch information
aweisberg authored and rschlussel committed Dec 12, 2019
1 parent 762b183 commit c270e80
Showing 1 changed file with 25 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@

import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
Expand All @@ -64,6 +65,7 @@
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.stream.Stream;

import static com.facebook.presto.ExceededMemoryLimitException.exceededGlobalTotalLimit;
import static com.facebook.presto.ExceededMemoryLimitException.exceededGlobalUserLimit;
Expand All @@ -86,6 +88,8 @@
import static io.airlift.units.Duration.nanosSince;
import static java.lang.Math.min;
import static java.lang.String.format;
import static java.util.AbstractMap.SimpleEntry;
import static java.util.Comparator.comparingLong;
import static java.util.Objects.requireNonNull;
import static org.weakref.jmx.ObjectNames.generatedNameOf;

Expand Down Expand Up @@ -366,18 +370,27 @@ private void logQueryKill(QueryId killedQueryId, List<MemoryInfo> nodes)
}
StringBuilder nodeDescription = new StringBuilder();
nodeDescription.append("Query Kill Decision: Killed ").append(killedQueryId).append("\n");
for (MemoryInfo node : nodes) {
MemoryPoolInfo memoryPoolInfo = node.getPools().get(GENERAL_POOL);
if (memoryPoolInfo == null) {
continue;
}
nodeDescription.append("Query Kill Scenario: ");
nodeDescription.append("MaxBytes ").append(memoryPoolInfo.getMaxBytes()).append(' ');
nodeDescription.append("FreeBytes ").append(memoryPoolInfo.getFreeBytes() + memoryPoolInfo.getReservedRevocableBytes()).append(' ');
nodeDescription.append("Queries ");
Joiner.on(",").withKeyValueSeparator("=").appendTo(nodeDescription, memoryPoolInfo.getQueryMemoryReservations());
nodeDescription.append('\n');
}
Comparator<Entry<MemoryPoolInfo, Long>> nodeMemoryComparator = comparingLong(Entry::getValue);
nodes.stream()
.filter(node -> node.getPools().get(GENERAL_POOL) != null)
.map(node ->
new SimpleEntry<MemoryPoolInfo, Long>(
node.getPools().get(GENERAL_POOL),
node.getPools().get(GENERAL_POOL).getQueryMemoryReservations().values().stream().mapToLong(l -> l).sum()))
.sorted(nodeMemoryComparator.reversed())
.map(Entry::getKey)
.forEachOrdered(memoryPoolInfo -> {
nodeDescription.append("Query Kill Scenario: ");
nodeDescription.append("MaxBytes ").append(memoryPoolInfo.getMaxBytes()).append(' ');
nodeDescription.append("FreeBytes ").append(memoryPoolInfo.getFreeBytes() + memoryPoolInfo.getReservedRevocableBytes()).append(' ');
nodeDescription.append("Queries ");
Comparator<Entry<QueryId, Long>> queryMemoryComparator = comparingLong(Entry::getValue);
Stream<Entry<QueryId, Long>> sortedMemoryReservations =
memoryPoolInfo.getQueryMemoryReservations().entrySet().stream()
.sorted(queryMemoryComparator.reversed());
Joiner.on(",").withKeyValueSeparator("=").appendTo(nodeDescription, (Iterable<Entry<QueryId, Long>>) sortedMemoryReservations::iterator);
nodeDescription.append('\n');
});
log.info(nodeDescription.toString());
}

Expand Down

0 comments on commit c270e80

Please sign in to comment.