activemq-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <>
Subject [jira] [Commented] (ARTEMIS-1151) Adapting TimedBuffer and NIO Buffer Pooling
Date Mon, 08 May 2017 15:21:04 GMT


ASF GitHub Bot commented on ARTEMIS-1151:

Github user franz1981 commented on a diff in the pull request:
    --- Diff: tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/journal/impl/
    @@ -205,162 +203,4 @@ public int getRemainingBytes() {
    -   /**
    -    * This test will verify if the system will switch to spin case the system can't perform
sleeps timely
    -    * due to proper kernel installations
    -    *
    -    * @throws Exception
    -    */
    -   @Test
    --- End diff --
    Because the new implementation rely on LockSupport.parkNanos to wait (is a MONOTONIC clock
on linux AFAIK) and it doesn't wait never the whole time until the given expiration.
    In addition the background flusher use the Semaphore only after a "long" period of no
    The only practical reason that could lead it to not be triggered in time is dependent
by the writers: if a writers wait a lot to push data, the time could expire, but I think is
normal no?

> Adapting TimedBuffer and NIO Buffer Pooling
> -------------------------------------------
>                 Key: ARTEMIS-1151
>                 URL:
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>          Components: Broker
>            Reporter: Francesco Nigro
>            Assignee: Francesco Nigro
>            Priority: Minor
> This is the list of improvements: 
> - NIO/ASYNCIO new TimedBuffer with adapting batch window heuristic 
> - NIO/ASYNCIO improved TimedBuffer write monitoring with lightweight concurrent performance
> - NIO/ASYNCIO journal/paging operations benefit from less buffer copy 
> - NIO/ASYNCIO any buffer copy is always performed with raw batch copy using SIMD instrinsics
(System::arrayCopy) or memcpy under the hood 
> - NIO improved clear buffers using SIMD instrinsics (Arrays::fill) and/or memset
> - NIO journal operation perform by default TLABs allocation pooling (off heap) retaining
only the last max sized buffer
> - NIO improved file copy operations using zero-copy FileChannel::transfertTo 
> - NIO improved zeroing using pooled single OS page buffer to clean the file + pwrite
(on Linux) 
> - NIO deterministic release of unpooled direct buffers to avoid OOM errors due to slow

This message was sent by Atlassian JIRA

View raw message