ignite-gg-12163 fix concurrency lvl for rw lock by default
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/68ee0630 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/68ee0630 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/68ee0630 Branch: refs/heads/ignite-5075-pds Commit: 68ee06304209541a8a1fafaab8a149002d70022d Parents: 59b88f5 Author: Dmitriy Govorukhin <[email protected]> Authored: Fri May 26 11:35:31 2017 +0300 Committer: Dmitriy Govorukhin <[email protected]> Committed: Fri May 26 11:35:31 2017 +0300 ---------------------------------------------------------------------- .../pagemem/impl/PageMemoryNoStoreImpl.java | 3 ++- .../ignite/internal/util/IgniteUtils.java | 23 ++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/68ee0630/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java index b205991..dc72482 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java @@ -37,6 +37,7 @@ import org.apache.ignite.internal.processors.cache.GridCacheSharedContext; import org.apache.ignite.internal.processors.cache.database.MemoryMetricsImpl; import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO; import org.apache.ignite.internal.util.GridUnsafe; +import org.apache.ignite.internal.util.IgniteUtils; import org.apache.ignite.internal.util.OffheapReadWriteLock; import org.apache.ignite.internal.util.offheap.GridOffHeapOutOfMemoryException; import org.apache.ignite.internal.util.typedef.internal.U; @@ -148,7 +149,7 @@ public class PageMemoryNoStoreImpl implements PageMemory { /** Concurrency lvl. */ private final int lockConcLvl = IgniteSystemProperties.getInteger( IGNITE_OFFHEAP_LOCK_CONCURRENCY_LEVEL, - Runtime.getRuntime().availableProcessors() * 4 + IgniteUtils.nearestPow2(Runtime.getRuntime().availableProcessors() * 4) ); /** */ http://git-wip-us.apache.org/repos/asf/ignite/blob/68ee0630/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java index d57c0f1..555238f 100755 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java @@ -10186,6 +10186,29 @@ public abstract class IgniteUtils { } /** + * @param x X. + */ + public static int nearestPow2(int x) { + return nearestPow2(x, true); + } + + /** + * @param x X. + * @param less Less. + */ + public static int nearestPow2(int x, boolean less) { + int y = 1; + + while (y < x) + y *= 2; + + if (less) + y /= 2; + + return y; + } + + /** * @param lock Lock. */ public static ReentrantReadWriteLockTracer lockTracer(ReadWriteLock lock) {
