public void logStructure(RollUpStructure struct) { if (!logging) { return; } long totCells = 0; log.info("Metric rollup structure constructed:"); for (GranularityLayer layer : struct.getLayers()) { long cells = layer.getNumCells(); totCells += cells; log.info(String.format("Granularity=%-20s %d cells", layer.getGranularity(), Long.valueOf(cells))); } log.info("Total cells used: " + totCells); }
private static GranularityList makeGranularityListFromStruct(RollUpStructure struct) { List<Granularity> grans = new ArrayList<Granularity>(); for (GranularityLayer layer : struct.getLayers()) { grans.add(layer.getGranularity()); } return new GranularityList(grans); }
GranularityTimes getOldestAllowedTimesOrEndTime(Time endTime) { GranularityTimes oldestAllowedTimes = getOldestAllowedTimeForGranularity(); for (GranularityLayer g : struct.getLayers()) { if (endTime.isAfter(oldestAllowedTimes.get(g.getGranularity()))) { oldestAllowedTimes.put(g.getGranularity(), endTime); } } return oldestAllowedTimes; }
private void assertStructureValid() { for (GranularityLayer layer : struct.getLayers()) { PageDefinition def = pageDefs.getDefinition(layer.getGranularity()); Granularity width = def.getPageWidth(); if (layer.getTotalTime().isSmallerThan(width.times(numPagesPerLayer)) == false) { throw new IllegalStateException(width + " times " + numPagesPerLayer + " not bigger than layer " + layer.getGranularity() + " width of " + layer.getTotalTime()); } long entriesPerPage = def.getEntriesPerPage(); if (entriesPerPage < 3) { throw new IllegalStateException("Layer " + layer.getGranularity() + " does not have >= 3 entries per page"); } if (entriesPerPage >= 30) { throw new IllegalStateException("Layer " + layer.getGranularity() + " has " + entriesPerPage + "entries per page. We want < 30"); } if (!width.isEvenMultipleOf(layer.getGranularity())) { throw new IllegalStateException("Width of page " + width + " for gran=" + layer.getGranularity() + " is not an even multiple of " + layer.getGranularity()); } } }
public static StorageConfig getDefaultConfig(Granularity maxStoredGran) { RollUpStructureBuilder builder = new RollUpStructureBuilder(); builder.add(MetricConstants.getCollectionGranularity(), Time.inMinutes(-30), Time.inMinutes(10)); // last 15 min builder.discardGranularitiesGreaterThan(maxStoredGran); builder.add(Granularity.inSeconds(30), Time.inMinutes(-60)); // last 30 min builder.add(Granularity.inMinutes(1), Time.inHours(-2)); // last hour builder.add(Granularity.inMinutes(4), Time.inHours(-8)); // last 4 hours builder.add(Granularity.inMinutes(8), Time.inHours(-20)); // last 8 hours builder.add(Granularity.inMinutes(16), Time.inHours(-40)); // 12 hour builder.add(Granularity.inMinutes(32), Time.inDays(-2)); // last day builder.add(Granularity.inMinutes(64), Time.inDays(-6)); // last 3 days builder.add(Granularity.inMinutes(128), Time.inDays(-8)); // last 7 days builder.add(Granularity.inMinutes(256), Time.inDays(-8)); builder.add(Granularity.inMinutes(512), Time.inDays(-8)); builder.add(Granularity.inMinutes(1024), Time.inDays(-16)); // Extend out so we have sufficient entries per page builder.add(Granularity.inMinutes(2048), Time.inDays(-30)); // Extend out so we have sufficient entries per page RollUpStructure struct = builder.build(); int numPagesPerLayer = PAGES_PER_LAYER; PageDefinitions pageDefs = new PageDefinitions(); for (GranularityLayer layer : struct.getLayers()) { pageDefs.addDefinition(makeDefinitionForLayer(layer, numPagesPerLayer)); } return new StorageConfig(struct, pageDefs, numPagesPerLayer); }