@Override public double getFlushPressure() { if (getRegionServerAccounting() == null || cacheFlusher == null) { // return 0 during RS initialization return 0.0; } return getRegionServerAccounting().getFlushPressure(); }
/** * Return true if we're above the low watermark */ private FlushType isAboveLowWaterMark() { return server.getRegionServerAccounting().isAboveLowWaterMark(); }
/** * Return true if global memory usage is above the high watermark */ private FlushType isAboveHighWaterMark() { return server.getRegionServerAccounting().isAboveHighWaterMark(); }
@Override public long getMemStoreLimit() { return this.regionServer.getRegionServerAccounting().getGlobalMemStoreLimit(); }
/** * Sets the global memstore limit to a new size. * @param globalMemStoreSize */ @Override public void setGlobalMemStoreLimit(long globalMemStoreSize) { this.server.getRegionServerAccounting().setGlobalMemStoreLimits(globalMemStoreSize); reclaimMemStoreMemory(); }
/** * @param conf * @param server */ public MemStoreFlusher(final Configuration conf, final HRegionServer server) { super(); this.conf = conf; this.server = server; this.threadWakeFrequency = conf.getLong(HConstants.THREAD_WAKE_FREQUENCY, 10 * 1000); this.blockingWaitTime = conf.getInt("hbase.hstore.blockingWaitTime", 90000); int handlerCount = conf.getInt("hbase.hstore.flusher.count", 2); this.flushHandlers = new FlushHandler[handlerCount]; LOG.info("globalMemStoreLimit=" + TraditionalBinaryPrefix .long2String(this.server.getRegionServerAccounting().getGlobalMemStoreLimit(), "", 1) + ", globalMemStoreLimitLowMark=" + TraditionalBinaryPrefix.long2String( this.server.getRegionServerAccounting().getGlobalMemStoreLimitLowMark(), "", 1) + ", Offheap=" + (this.server.getRegionServerAccounting().isOffheap())); }
LOG.debug("Flush thread woke up because memory above low water=" + TraditionalBinaryPrefix.long2String( server.getRegionServerAccounting().getGlobalMemStoreLimitLowMark(), "", 1));
/** * Flush and log stats on flush * @param r * @param server * @throws IOException */ private void flush(final HRegion r, final HRegionServer server) throws IOException { LOG.info("Flush " + r.toString() + " on " + server.getServerName() + ", " + r.flush(true) + ", size=" + server.getRegionServerAccounting().getGlobalMemStoreDataSize()); }
if (!blocked) { startTime = EnvironmentEdgeManager.currentTime(); if (!server.getRegionServerAccounting().isOffheap()) { logMsg("global memstore heapsize", server.getRegionServerAccounting().getGlobalMemStoreHeapSize(), server.getRegionServerAccounting().getGlobalMemStoreLimit()); } else { switch (flushType) { case ABOVE_OFFHEAP_HIGHER_MARK: logMsg("the global offheap memstore datasize", server.getRegionServerAccounting().getGlobalMemStoreOffHeapSize(), server.getRegionServerAccounting().getGlobalMemStoreLimit()); break; case ABOVE_ONHEAP_HIGHER_MARK: logMsg("global memstore heapsize", server.getRegionServerAccounting().getGlobalMemStoreHeapSize(), server.getRegionServerAccounting().getGlobalOnHeapMemStoreLimit()); break; default:
" due to global heap pressure. Total memstore off heap size=" + TraditionalBinaryPrefix.long2String( server.getRegionServerAccounting().getGlobalMemStoreOffHeapSize(), "", 1) + " memstore heap size=" + TraditionalBinaryPrefix.long2String( server.getRegionServerAccounting().getGlobalMemStoreHeapSize(), "", 1)); flushedOne = refreshStoreFilesAndReclaimMemory(bestRegionReplica); if (!flushedOne) { "Total Memstore Heap size=" + TraditionalBinaryPrefix.long2String( server.getRegionServerAccounting().getGlobalMemStoreHeapSize(), "", 1) + "Total Memstore Off-Heap size=" + TraditionalBinaryPrefix.long2String( server.getRegionServerAccounting().getGlobalMemStoreOffHeapSize(), "", 1) + ", Region memstore size=" + TraditionalBinaryPrefix.long2String(regionToFlushSize, "", 1));
globalMemStoreSize += server.getRegion(regionInfo.getEncodedName()).getMemStoreDataSize(); assertEquals(server.getRegionServerAccounting().getGlobalMemStoreDataSize(), globalMemStoreSize); for (HRegionServer server : getOnlineRegionServers()) { LOG.info("Starting flushes on " + server.getServerName() + ", size=" + server.getRegionServerAccounting().getGlobalMemStoreDataSize()); long now = System.currentTimeMillis(); long timeout = now + 1000; while(server.getRegionServerAccounting().getGlobalMemStoreDataSize() != 0 && timeout < System.currentTimeMillis()) { Threads.sleep(10); long size = server.getRegionServerAccounting().getGlobalMemStoreDataSize(); if (size > 0) { size = server.getRegionServerAccounting().getGlobalMemStoreDataSize(); assertEquals("Server=" + server.getServerName() + ", i=" + i++, 0, size);
when(mockRS.getRegionServerAccounting()).thenReturn(rsa); ServerName mockServerName = Mockito.mock(ServerName.class); when(mockServerName.getServerName()).thenReturn(tableNameStr + ",1234");
/** * Return true if we're above the high watermark */ private boolean isAboveLowWaterMark() { return server.getRegionServerAccounting(). getGlobalMemstoreSize() >= globalMemStoreLimitLowMark; }
/** * Return true if global memory usage is above the high watermark */ private boolean isAboveHighWaterMark() { return server.getRegionServerAccounting(). getGlobalMemstoreSize() >= globalMemStoreLimit; }
/** * Return true if global memory usage is above the high watermark */ private boolean isAboveHighWaterMark() { return server.getRegionServerAccounting(). getGlobalMemstoreSize() >= globalMemStoreLimit; }
/** * Return true if we're above the high watermark */ private boolean isAboveLowWaterMark() { return server.getRegionServerAccounting(). getGlobalMemstoreSize() >= globalMemStoreLimitLowMark; }
/** * Flush and log stats on flush * @param r * @param server * @throws IOException */ private void flush(final HRegion r, final HRegionServer server) throws IOException { LOG.info("Flush " + r.toString() + " on " + server.getServerName() + ", " + r.flush(true) + ", size=" + server.getRegionServerAccounting().getGlobalMemStoreDataSize()); }
LOG.info("Blocking updates on " + server.toString() + ": the global memstore size " + StringUtils.humanReadableInt(server.getRegionServerAccounting().getGlobalMemstoreSize()) + " is >= than blocking " + StringUtils.humanReadableInt(globalMemStoreLimit) + " size");
globalMemStoreSize += server.getRegion(regionInfo.getEncodedName()).getMemStoreDataSize(); assertEquals(server.getRegionServerAccounting().getGlobalMemStoreDataSize(), globalMemStoreSize); for (HRegionServer server : getOnlineRegionServers()) { LOG.info("Starting flushes on " + server.getServerName() + ", size=" + server.getRegionServerAccounting().getGlobalMemStoreDataSize()); long now = System.currentTimeMillis(); long timeout = now + 1000; while(server.getRegionServerAccounting().getGlobalMemStoreDataSize() != 0 && timeout < System.currentTimeMillis()) { Threads.sleep(10); long size = server.getRegionServerAccounting().getGlobalMemStoreDataSize(); if (size > 0) { size = server.getRegionServerAccounting().getGlobalMemStoreDataSize(); assertEquals("Server=" + server.getServerName() + ", i=" + i++, 0, size);
+ server.toString() + ": the global memstore size " + TraditionalBinaryPrefix.long2String(server.getRegionServerAccounting() .getGlobalMemstoreSize(), "", 1) + " is >= than blocking " + TraditionalBinaryPrefix.long2String(globalMemStoreLimit, "", 1) + " size");