[
https://issues.apache.org/jira/browse/ARTEMIS-1273?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16079574#comment-16079574
]
ASF GitHub Bot commented on ARTEMIS-1273:
-----------------------------------------
GitHub user franz1981 opened a pull request:
https://github.com/apache/activemq-artemis/pull/1390
ARTEMIS-1273 Bounded OrderedExecutor
Introduce by default a BoundedOrderedExecutor that:
1. uses Array based lock/wait-free queues to have contiguos allocations
2. OOM protected limiting the allowed max size of the queue
3. produce garbage only if the consumer can't keep up with the producer by
a configurable amount
4. uses a scalable handmade spin lock (XADD based)
5. cost of monitoring pending tasks list size O(1)
6. allow optimized versions of task submission using different specialized
concurrent queues
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/franz1981/activemq-artemis
jctools_ordered_executor
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/activemq-artemis/pull/1390.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #1390
----
commit 220ed672d7da50dd316dfb221effcd455c3cc163
Author: Francesco Nigro <[email protected]>
Date: 2016-12-19T15:02:17Z
ARTEMIS-1273 Bounded OrderedExecutor
----
> Bounded OrderedExecutor
> -----------------------
>
> Key: ARTEMIS-1273
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1273
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Components: Broker
> Reporter: Francesco Nigro
> Assignee: Francesco Nigro
>
> The default OrderedExecutor is limited by:
> # scattered allocations of linked list nodes
> # no OOM protection
> # always garbage producing
> # uses a not scalable (ie false sharing + CAS based) handmade spin lock
> # cost of monitoring pending tasks list size O(n)
> # doesn't allow optimized version of task submission (ie single producer)
> The BoundedOrderedExecutor (enabled by default) solves them:
> # uses Array based lock/wait-free queues to have contiguos allocations
> # OOM protected limiting the allowed max size of the queue
> # produce garbage only if the consumer can't keep up with the producer by a
> configurable amount
> # uses a scalable handmade spin lock (XADD based)
> # cost of monitoring pending tasks list size O(1)
> # allow optimized versions of task submission using different specialized
> concurrent queues
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)