Return-Path: X-Original-To: apmail-activemq-issues-archive@minotaur.apache.org Delivered-To: apmail-activemq-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 97D6219B44 for ; Wed, 27 Apr 2016 15:15:13 +0000 (UTC) Received: (qmail 62994 invoked by uid 500); 27 Apr 2016 15:15:13 -0000 Delivered-To: apmail-activemq-issues-archive@activemq.apache.org Received: (qmail 62951 invoked by uid 500); 27 Apr 2016 15:15:13 -0000 Mailing-List: contact issues-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list issues@activemq.apache.org Received: (qmail 62757 invoked by uid 99); 27 Apr 2016 15:15:13 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 27 Apr 2016 15:15:13 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 379382C044E for ; Wed, 27 Apr 2016 15:15:13 +0000 (UTC) Date: Wed, 27 Apr 2016 15:15:13 +0000 (UTC) From: "Francesco Nigro (JIRA)" To: issues@activemq.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Created] (ARTEMIS-508) Sequential File Improvement + Performance Tests MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 Francesco Nigro created ARTEMIS-508: --------------------------------------- Summary: Sequential File Improvement + Performance Tests Key: ARTEMIS-508 URL: https://issues.apache.org/jira/browse/ARTEMIS-508 Project: ActiveMQ Artemis Issue Type: Improvement Reporter: Francesco Nigro Priority: Critical https://github.com/franz1981/activemq-artemis/commit/faaec74a7c070f5689e4da71996818488d8d0d18 I've implemented in the package org.apache.activemq.artemis.core.io.mapped a new memory mapped SequentialFile implementation to support fast write/read operations for OSs that cannot use libaio or need RAM access performances on standard Files. The implementation is not thread-safe (it is needed?) and needs more buffer checks (or a complex implementation). I'm using the Netty's PlatformDependent class to perform bulk copy without safepoint's poll issues. The implementation is simple but it's good as a proof of concept to compare it against the others: i' ve added a coordinated-omission performance test to measure the latency of a directWrite + OS jitter. The write tests show performances typical of memory mapped file: quoting from Peter Lawrey "for burst of up to 10% of the main memory, it can sustain rates of 1 - 3 GB/second written. e.g. A laptop with 8 GB of memory might handle bursts of 800 MB at a rate of 1 GB per second. A server with 64 GB of memory might handle a burst of 6.5 GB at a rate of 3 GB per second". I want to improve the quality of the implementation by: 1- enforcing the original SequenceFile contract 2- replacing synchronized reads/writes with lock-free versions 3- replacing the EventExecutor with a Lock-Free (even wait-free) Array Queue + EventLoop's poller 4- addressing all the False-Sharing issues around all the AtomicLong instances used 5- reducing the garbage produced for the fast paths to 0 [6- expose try methods to allow direct flow control] [7- replacing the Semaphore based rate limiter with a lock free one] That's are all proposals, what do you think about it? Regards -- This message was sent by Atlassian JIRA (v6.3.4#6332)