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 67D12200BD0 for ; Wed, 30 Nov 2016 09:20:01 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 668B3160B13; Wed, 30 Nov 2016 08:20:01 +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 A4F01160B21 for ; Wed, 30 Nov 2016 09:20:00 +0100 (CET) Received: (qmail 32180 invoked by uid 500); 30 Nov 2016 08:19:59 -0000 Mailing-List: contact issues-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 issues@ignite.apache.org Received: (qmail 32053 invoked by uid 99); 30 Nov 2016 08:19:59 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Nov 2016 08:19:59 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 9EE4B2C2A68 for ; Wed, 30 Nov 2016 08:19:59 +0000 (UTC) Date: Wed, 30 Nov 2016 08:19:59 +0000 (UTC) From: "Alexey Goncharuk (JIRA)" To: issues@ignite.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (IGNITE-3477) Rework offheap storage MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Wed, 30 Nov 2016 08:20:01 -0000 [ https://issues.apache.org/jira/browse/IGNITE-3477?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Alexey Goncharuk updated IGNITE-3477: ------------------------------------- Assignee: (was: Alexey Goncharuk) > Rework offheap storage > ---------------------- > > Key: IGNITE-3477 > URL: https://issues.apache.org/jira/browse/IGNITE-3477 > Project: Ignite > Issue Type: Task > Components: cache > Reporter: Alexey Goncharuk > Labels: important > Fix For: 2.0 > > > Current (Ignite 1.x) implementation of cache storage relies on a tiered approach where cache entry can be located in one of the three storage areas: on-heap, off-heap memory and swap. It leads to the following disadvantages: > * Entry constantly moves from one storage area to another which leads to a complex code (for example, swap/unswap listeners for queries and rebalancing) > * It is not possible to set per-cache memory limit > * Off-heap indexes require on-heap row cache. If this cache is small, performance becomes very poor > * Continuous put/remove operations with OFFHEAP_TIERED mode lead to uncontrollable memory fragmentation > We can reapproach the cache storage and base it on a concept of page memory. We will allocate several memory pools of pages of fixed size and assign each cache to one of the memory pools. All storage data structures should operate on memory pages, the main storage will be always off-heap with an optional on-heap cache. > This gives us the following benefits: > * Flexible and precise per-cache memory limit > * Transparent swap: we can allocate page memory over a memory-mapped file and OS will take care of swapping > * Getting rid of on-heap cache for off-heap SQL indexes > * Ability to take a cluster-wide data snapshot -- This message was sent by Atlassian JIRA (v6.3.4#6332)