Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 2E8C1200CA3 for ; Thu, 1 Jun 2017 15:23:24 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 2DAFD160BE3; Thu, 1 Jun 2017 13:23:24 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 1462D160BE0 for ; Thu, 1 Jun 2017 15:23:21 +0200 (CEST) Received: (qmail 16674 invoked by uid 500); 1 Jun 2017 13:23:21 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 14965 invoked by uid 99); 1 Jun 2017 13:23:18 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Jun 2017 13:23:18 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id DEDE2F4A4B; Thu, 1 Jun 2017 13:23:17 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: agoncharuk@apache.org To: commits@ignite.apache.org Date: Thu, 01 Jun 2017 13:24:03 -0000 Message-Id: <4ff8948e78bc482fa31299bb6829434b@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [48/50] [abbrv] ignite git commit: IGNITE-5124 - Corrected metrics configuration - Fixes #2045. archived-at: Thu, 01 Jun 2017 13:23:24 -0000 IGNITE-5124 - Corrected metrics configuration - Fixes #2045. Signed-off-by: Alexey Goncharuk Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/dc780268 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/dc780268 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/dc780268 Branch: refs/heads/ignite-5267 Commit: dc780268d750440769960c0e8882b483cc766d86 Parents: 98c05a2 Author: Sergey Chugunov Authored: Thu Jun 1 13:10:30 2017 +0300 Committer: Alexey Goncharuk Committed: Thu Jun 1 13:10:30 2017 +0300 ---------------------------------------------------------------------- .../MemoryPolicyConfiguration.java | 20 ++++++++++---------- .../IgniteCacheDatabaseSharedManager.java | 6 ++++++ .../cache/database/MemoryMetricsImpl.java | 20 +++++++++----------- .../cache/database/MemoryMetricsMXBeanImpl.java | 10 +++++++++- .../ignite/mxbean/MemoryMetricsMXBean.java | 8 ++++---- .../database/MemoryMetricsSelfTest.java | 10 +++++----- 6 files changed, 43 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/dc780268/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java index be0877f..b496901 100644 --- a/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java @@ -72,7 +72,7 @@ public final class MemoryPolicyConfiguration implements Serializable { public static final int DFLT_SUB_INTERVALS = 5; /** Default length of interval over which {@link MemoryMetrics#getAllocationRate()} metric is calculated. */ - public static final int DFLT_RATE_TIME_INTERVAL_SEC = 60; + public static final int DFLT_RATE_TIME_INTERVAL_MILLIS = 60_000; /** Memory policy name. */ private String name = DFLT_MEM_PLC_DEFAULT_NAME; @@ -103,7 +103,7 @@ public final class MemoryPolicyConfiguration implements Serializable { */ private boolean metricsEnabled = DFLT_METRICS_ENABLED; - /** Number of sub-intervals the whole {@link #setRateTimeInterval(int)} will be split into to calculate + /** Number of sub-intervals the whole {@link #setRateTimeInterval(long)} will be split into to calculate * {@link MemoryMetrics#getAllocationRate()} and {@link MemoryMetrics#getEvictionRate()} rates (5 by default). *

* Setting it to a bigger value will result in more precise calculation and smaller drops of @@ -112,13 +112,13 @@ public final class MemoryPolicyConfiguration implements Serializable { private int subIntervals = DFLT_SUB_INTERVALS; /** - * Time interval for {@link MemoryMetrics#getAllocationRate()} + * Time interval (in milliseconds) for {@link MemoryMetrics#getAllocationRate()} * and {@link MemoryMetrics#getEvictionRate()} monitoring purposes. *

- * For instance, after setting the interval to 60 seconds, subsequent calls to {@link MemoryMetrics#getAllocationRate()} + * For instance, after setting the interval to 60_000 milliseconds, subsequent calls to {@link MemoryMetrics#getAllocationRate()} * will return average allocation rate (pages per second) for the last minute. */ - private int rateTimeInterval = DFLT_RATE_TIME_INTERVAL_SEC; + private long rateTimeInterval = DFLT_RATE_TIME_INTERVAL_MILLIS; /** * Gets memory policy name. @@ -315,13 +315,13 @@ public final class MemoryPolicyConfiguration implements Serializable { * Gets time interval for {@link MemoryMetrics#getAllocationRate()} * and {@link MemoryMetrics#getEvictionRate()} monitoring purposes. *

- * For instance, after setting the interval to 60 seconds, + * For instance, after setting the interval to 60_000 milliseconds, * subsequent calls to {@link MemoryMetrics#getAllocationRate()} * will return average allocation rate (pages per second) for the last minute. * * @return Time interval over which allocation rate is calculated. */ - public int getRateTimeInterval() { + public long getRateTimeInterval() { return rateTimeInterval; } @@ -336,14 +336,14 @@ public final class MemoryPolicyConfiguration implements Serializable { * @param rateTimeInterval Time interval used for allocation and eviction rates calculations. * @return {@code this} for chaining. */ - public MemoryPolicyConfiguration setRateTimeInterval(int rateTimeInterval) { + public MemoryPolicyConfiguration setRateTimeInterval(long rateTimeInterval) { this.rateTimeInterval = rateTimeInterval; return this; } /** - * Gets a number of sub-intervals the whole {@link #setRateTimeInterval(int)} + * Gets a number of sub-intervals the whole {@link #setRateTimeInterval(long)} * will be split into to calculate {@link MemoryMetrics#getAllocationRate()} * and {@link MemoryMetrics#getEvictionRate()} rates (5 by default). *

@@ -358,7 +358,7 @@ public final class MemoryPolicyConfiguration implements Serializable { } /** - * Sets a number of sub-intervals the whole {@link #setRateTimeInterval(int)} will be split into to calculate + * Sets a number of sub-intervals the whole {@link #setRateTimeInterval(long)} will be split into to calculate * {@link MemoryMetrics#getAllocationRate()} and {@link MemoryMetrics#getEvictionRate()} rates (5 by default). *

* Setting it to a bigger value will result in more precise calculation and smaller drops of http://git-wip-us.apache.org/repos/asf/ignite/blob/dc780268/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java index e356f35..11c9b56 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java @@ -370,6 +370,12 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap "[name=" + plcCfg.getName() + ", subIntervals=" + plcCfg.getSubIntervals() + "]" ); + + if (plcCfg.getRateTimeInterval() < 1_000) + throw new IgniteCheckedException("Rate time interval must be longer that 1 second (1_000 milliseconds) " + + "(use MemoryPolicyConfiguration.rateTimeInterval property to adjust the interval) " + + "[name=" + plcCfg.getName() + + ", rateTimeInterval=" + plcCfg.getRateTimeInterval() + "]"); } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/dc780268/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsImpl.java index 3e3b690..2bd96e7 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsImpl.java @@ -58,8 +58,8 @@ public class MemoryMetricsImpl implements MemoryMetrics { /** */ private final MemoryPolicyConfiguration memPlcCfg; - /** Time interval (in seconds) when allocations/evictions are counted to calculate rate. */ - private volatile int rateTimeInterval; + /** Time interval (in milliseconds) when allocations/evictions are counted to calculate rate. */ + private volatile long rateTimeInterval; /** * @param memPlcCfg MemoryPolicyConfiguration. @@ -99,7 +99,7 @@ public class MemoryMetricsImpl implements MemoryMetrics { for (int i = 0; i < subInts; i++) res += allocRateCounters[i].floatValue(); - return res / rateTimeInterval; + return res * 1000 / rateTimeInterval; } /** {@inheritDoc} */ @@ -200,8 +200,8 @@ public class MemoryMetricsImpl implements MemoryMetrics { /** * @param intervalNum Interval number. */ - private int subInt(int intervalNum) { - return (rateTimeInterval * 1000 * intervalNum) / subInts; + private long subInt(int intervalNum) { + return (rateTimeInterval * intervalNum) / subInts; } /** @@ -277,9 +277,9 @@ public class MemoryMetricsImpl implements MemoryMetrics { } /** - * @param rateTimeInterval Time interval used to calculate allocation/eviction rate. + * @param rateTimeInterval Time interval (in milliseconds) used to calculate allocation/eviction rate. */ - public void rateTimeInterval(int rateTimeInterval) { + public void rateTimeInterval(long rateTimeInterval) { this.rateTimeInterval = rateTimeInterval; } @@ -294,10 +294,8 @@ public class MemoryMetricsImpl implements MemoryMetrics { if (this.subInts == subInts) return; - int rateIntervalMs = rateTimeInterval * 1000; - - if (rateIntervalMs / subInts < 10) - subInts = rateIntervalMs / 10; + if (rateTimeInterval / subInts < 10) + subInts = (int) rateTimeInterval / 10; LongAdder8[] newCounters = new LongAdder8[subInts]; http://git-wip-us.apache.org/repos/asf/ignite/blob/dc780268/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsMXBeanImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsMXBeanImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsMXBeanImpl.java index 05c6677..d3ae378 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsMXBeanImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsMXBeanImpl.java @@ -67,12 +67,20 @@ class MemoryMetricsMXBeanImpl implements MemoryMetricsMXBean { } /** {@inheritDoc} */ - @Override public void rateTimeInterval(int rateTimeInterval) { + @Override public void rateTimeInterval(long rateTimeInterval) { + if (rateTimeInterval < 1000) + throw new IllegalArgumentException("rateTimeInterval property must be positive " + + "and greater than 1_000 milliseconds (one second)"); + memMetrics.rateTimeInterval(rateTimeInterval); } /** {@inheritDoc} */ @Override public void subIntervals(int subInts) { + if (subInts <= 1) + throw new IllegalArgumentException("subIntervals property must be positive " + + "and greater than one"); + memMetrics.subIntervals(subInts); } http://git-wip-us.apache.org/repos/asf/ignite/blob/dc780268/modules/core/src/main/java/org/apache/ignite/mxbean/MemoryMetricsMXBean.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/MemoryMetricsMXBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/MemoryMetricsMXBean.java index b371d2a..d0900f6 100644 --- a/modules/core/src/main/java/org/apache/ignite/mxbean/MemoryMetricsMXBean.java +++ b/modules/core/src/main/java/org/apache/ignite/mxbean/MemoryMetricsMXBean.java @@ -91,7 +91,7 @@ public interface MemoryMetricsMXBean extends MemoryMetrics { * For instance, after setting the interval to 60 seconds, subsequent calls to {@link #getAllocationRate()} * will return average allocation rate (pages per second) for the last minute. * - * @param rateTimeInterval Time interval used for allocation and eviction rates calculations. + * @param rateTimeInterval Time interval (in milliseconds) used for allocation and eviction rates calculations. */ @MXBeanDescription( "Sets time interval for pages allocation and eviction monitoring purposes." @@ -100,12 +100,12 @@ public interface MemoryMetricsMXBean extends MemoryMetrics { "rateTimeInterval" ) @MXBeanParametersDescriptions( - "Time interval (in seconds) to set." + "Time interval (in milliseconds) to set." ) - public void rateTimeInterval(int rateTimeInterval); + public void rateTimeInterval(long rateTimeInterval); /** - * Sets a number of sub-intervals the whole {@link #rateTimeInterval(int)} will be split into to calculate + * Sets a number of sub-intervals the whole {@link #rateTimeInterval(long)} will be split into to calculate * {@link #getAllocationRate()} and {@link #getEvictionRate()} rates (5 by default). *

* Setting it to a bigger value will result in more precise calculation and smaller drops of http://git-wip-us.apache.org/repos/asf/ignite/blob/dc780268/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MemoryMetricsSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MemoryMetricsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MemoryMetricsSelfTest.java index cb5700f..706e717 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MemoryMetricsSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MemoryMetricsSelfTest.java @@ -55,7 +55,7 @@ public class MemoryMetricsSelfTest extends GridCommonAbstractTest { */ public void testAllocationRateSingleThreaded() throws Exception { threadsCnt = 1; - memMetrics.rateTimeInterval(10); + memMetrics.rateTimeInterval(10_000); CountDownLatch startLatch = new CountDownLatch(1); @@ -75,7 +75,7 @@ public class MemoryMetricsSelfTest extends GridCommonAbstractTest { */ public void testAllocationRateMultiThreaded() throws Exception { threadsCnt = 4; - memMetrics.rateTimeInterval(5); + memMetrics.rateTimeInterval(5_000); CountDownLatch startLatch = new CountDownLatch(1); @@ -110,7 +110,7 @@ public class MemoryMetricsSelfTest extends GridCommonAbstractTest { */ public void testAllocationRateTimeIntervalConcurrentChange() throws Exception { threadsCnt = 5; - memMetrics.rateTimeInterval(5); + memMetrics.rateTimeInterval(5_000); CountDownLatch startLatch = new CountDownLatch(1); @@ -123,7 +123,7 @@ public class MemoryMetricsSelfTest extends GridCommonAbstractTest { for (int i = 0; i < 10; i++) { Thread.sleep(25); - memMetrics.rateTimeInterval((2 + i * 5) % 3 + 1); + memMetrics.rateTimeInterval(((2 + i * 5) % 3 + 1) * 1000); } joinAllThreads(); @@ -137,7 +137,7 @@ public class MemoryMetricsSelfTest extends GridCommonAbstractTest { */ public void testAllocationRateSubintervalsConcurrentChange() throws Exception { threadsCnt = 5; - memMetrics.rateTimeInterval(5); + memMetrics.rateTimeInterval(5_000); CountDownLatch startLatch = new CountDownLatch(1);