From e7ddee5509b960ecad94e9bc24d9314e7c44141d Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 3 Feb 2020 15:41:06 +0000 Subject: [PATCH] Graphs: Add stat for render time (ticket #2684) --- .../java/src/net/i2p/router/web/SummaryRenderer.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java index 1f4ba85878..02a53e2db6 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java @@ -57,11 +57,13 @@ class SummaryRenderer { private static final int SIZE_MONO = 10; private static final int SIZE_LEGEND = 10; private static final int SIZE_TITLE = 13; + private static final long[] RATES = new long[] { 60*60*1000 }; public SummaryRenderer(I2PAppContext ctx, SummaryListener lsnr) { _log = ctx.logManager().getLog(SummaryRenderer.class); _listener = lsnr; _context = ctx; + ctx.statManager().createRateStat("graph.renderTime", "", "Router", RATES); } /** @@ -132,15 +134,15 @@ class SummaryRenderer { public void render(OutputStream out, int width, int height, boolean hideLegend, boolean hideGrid, boolean hideTitle, boolean showEvents, int periodCount, int endp, boolean showCredit, SummaryListener lsnr2, String titleOverride) throws IOException { + long begin = System.currentTimeMillis(); // prevent NaNs if we are skewed ahead of system time - long end = Math.min(_listener.now(), System.currentTimeMillis()) - 75*1000; + long end = Math.min(_listener.now(), begin - 75*1000); long period = _listener.getRate().getPeriod(); if (endp > 0) end -= period * endp; if (periodCount <= 0 || periodCount > _listener.getRows()) periodCount = _listener.getRows(); long start = end - (period * periodCount); - //long begin = System.currentTimeMillis(); ImageOutputStream ios = null; try { RrdGraphDef def = new RrdGraphDef(); @@ -311,12 +313,8 @@ class SummaryRenderer { graph.render(gfx); ios = new MemoryCacheImageOutputStream(out); ImageIO.write(img, "png", ios); - //System.out.println("Graph created"); - //File t = File.createTempFile("jrobinData", ".xml"); - //_listener.getData().dumpXml(new FileOutputStream(t)); - //System.out.println("plotted: " + (data != null ? data.length : 0) + " bytes in " + timeToPlot - // ); // + ", data written to " + t.getAbsolutePath()); + _context.statManager().addRateData("graph.renderTime", System.currentTimeMillis() - begin); } catch (RrdException re) { _log.error("Error rendering", re); throw new IOException("Error plotting: " + re.getLocalizedMessage());