@Override public void timerElapsed(Timer timer /* may be null */) { if (!ramCheckSemaphore.tryAcquire()) return; try { final Runtime runtime = Runtime.getRuntime(); runtime.gc(); final long used = ( runtime.totalMemory() - runtime.freeMemory()); final long memMax = runtime.maxMemory(); config.results().usedMemorySize().<TimeResource> create().setValue(used); config.results().maxAvailableMemorySize().<TimeResource> create().setValue(memMax); // should not really change config.results().usedMemorySize().activate(false); config.results().maxAvailableMemorySize().activate(false); appMan.getLogger().info("RAM used: {} MB, max. RAM available: {}", (used/mb), (memMax/mb)); } finally { ramCheckSemaphore.release(); } } };
public static long getInterval(final TimeResource itvRes, long defaultItv) { long proposed = 0; if (itvRes.isActive()) proposed = itvRes.getValue(); if (proposed < MIN_SUPERVISION_ITV) { proposed = defaultItv; itvRes.<TimeResource> create().setValue(defaultItv); itvRes.activate(false); } return proposed; }
@Override public void timerElapsed(Timer timer /* may be null */) { if (!diskCheckSemaphore.tryAcquire()) return; try { final long dataSize = size(Paths.get("./data")); final long rundirSize = size(Paths.get(".")); long free = Long.MIN_VALUE; try { free = Files.getFileStore(Paths.get("/")).getUsableSpace(); } catch (IOException e) { appMan.getLogger().warn("Error determining free disk space",e); } config.results().rundirFolderSize().<TimeResource> create().setValue(rundirSize); config.results().dataFolderSize().<TimeResource> create().setValue(dataSize); if (free != Long.MIN_VALUE) config.results().freeDiskSpace().<TimeResource> create().setValue(free); config.results().rundirFolderSize().activate(false); config.results().dataFolderSize().activate(false); config.results().freeDiskSpace().activate(false); appMan.getLogger().info("Rundir folder size: {} MB, data folder: {} MB, free disk space: {} MB", (rundirSize/mb), (dataSize/mb), (free != Long.MIN_VALUE ? (free/mb) : "n.a.")); } finally { diskCheckSemaphore.release(); } } };
source.create(); source.setValue(value); source.activate(true); } else { source.setValue(value);
public Tasks(ApplicationManager appMan, SystemSupervisionConfig config) { this.appMan = appMan; this.config = config; this.diskTimer = appMan.createTimer(SupervisionUtils.getInterval(config.diskCheckInterval(), SupervisionUtils.DEFAULT_DISK_SUPERVISION_ITV), diskSupervision); this.ramTimer = appMan.createTimer(SupervisionUtils.getInterval(config.memoryCheckInterval(), SupervisionUtils.DEFAULT_RAM_SUPERVISION_ITV), ramSupervision); this.resourceTimer = appMan.createTimer(SupervisionUtils.getInterval(config.resourceCheckInterval(), SupervisionUtils.DEFAULT_RESOURCE_SUPERVISION_ITV), resourceSupervision); config.lastStart().<TimeResource> create().setValue(appMan.getFrameworkTime()); config.lastStart().activate(false); // run all timers once at the beginning this.startTimer = appMan.createTimer(5*1000, new TimerListener() { @Override public void timerElapsed(Timer timer) { timer.destroy(); diskSupervision.timerElapsed(diskTimer); ramSupervision.timerElapsed(ramTimer); resourceSupervision.timerElapsed(resourceTimer); } }); }