static List<LowMemoryKiller.QueryMemoryInfo> toQueryMemoryInfoList(String reservedQuery, Map<String, Map<String, Long>> queries) { ImmutableList.Builder<LowMemoryKiller.QueryMemoryInfo> result = ImmutableList.builder(); for (Map.Entry<String, Map<String, Long>> entry : queries.entrySet()) { String queryId = entry.getKey(); long totalReservation = entry.getValue().values().stream() .mapToLong(x -> x) .sum(); result.add(new LowMemoryKiller.QueryMemoryInfo(new QueryId(queryId), queryId.equals(reservedQuery) ? RESERVED_POOL : GENERAL_POOL, totalReservation)); } return result.build(); }
@Override public Optional<QueryId> chooseQueryToKill(List<QueryMemoryInfo> runningQueries, List<MemoryInfo> nodes) { QueryId biggestQuery = null; long maxMemory = 0; for (QueryMemoryInfo query : runningQueries) { long bytesUsed = query.getMemoryReservation(); if (bytesUsed > maxMemory && GENERAL_POOL.equals(query.getMemoryPoolId())) { biggestQuery = query.getQueryId(); maxMemory = bytesUsed; } } return Optional.ofNullable(biggestQuery); } }
@Override public Optional<QueryId> chooseQueryToKill(List<QueryMemoryInfo> runningQueries, List<MemoryInfo> nodes) { QueryId biggestQuery = null; long maxMemory = 0; for (QueryMemoryInfo query : runningQueries) { long bytesUsed = query.getMemoryReservation(); if (bytesUsed > maxMemory && GENERAL_POOL.equals(query.getMemoryPoolId())) { biggestQuery = query.getQueryId(); maxMemory = bytesUsed; } } return Optional.ofNullable(biggestQuery); } }
private QueryMemoryInfo createQueryMemoryInfo(QueryExecution query) { return new QueryMemoryInfo(query.getQueryId(), query.getMemoryPool().getId(), query.getTotalMemoryReservation().toBytes()); }
private QueryMemoryInfo createQueryMemoryInfo(QueryExecution query) { // when the legacy system pool is enabled we use the user memory instead of the total memory if (isLegacySystemPoolEnabled) { return new QueryMemoryInfo(query.getQueryId(), query.getMemoryPool().getId(), query.getUserMemoryReservation().toBytes()); } return new QueryMemoryInfo(query.getQueryId(), query.getMemoryPool().getId(), query.getTotalMemoryReservation().toBytes()); }
static List<LowMemoryKiller.QueryMemoryInfo> toQueryMemoryInfoList(String reservedQuery, Map<String, Map<String, Long>> queries) { ImmutableList.Builder<LowMemoryKiller.QueryMemoryInfo> result = ImmutableList.builder(); for (Map.Entry<String, Map<String, Long>> entry : queries.entrySet()) { String queryId = entry.getKey(); long totalReservation = entry.getValue().values().stream() .mapToLong(x -> x) .sum(); result.add(new LowMemoryKiller.QueryMemoryInfo(new QueryId(queryId), queryId.equals(reservedQuery) ? RESERVED_POOL : GENERAL_POOL, totalReservation)); } return result.build(); }