You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by franz1981 <gi...@git.apache.org> on 2018/11/14 16:12:23 UTC
[GitHub] qpid-jms pull request #26: QPIDJMS-430 Lock-Free FifoMessageQueue
GitHub user franz1981 opened a pull request:
https://github.com/apache/qpid-jms/pull/26
QPIDJMS-430 Lock-Free FifoMessageQueue
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/franz1981/qpid-jms lock_free_fifo_q
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/qpid-jms/pull/26.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 #26
----
commit f8c1a18ec87111138e3d302c9cce43f7abae4674
Author: Francesco Nigro <ni...@...>
Date: 2018-11-14T13:33:58Z
QPIDJMS-430 Lock-Free FifoMessageQueue
----
---
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org
[GitHub] qpid-jms issue #26: QPIDJMS-430 Lock-Free FifoMessageQueue
Posted by franz1981 <gi...@git.apache.org>.
Github user franz1981 commented on the issue:
https://github.com/apache/qpid-jms/pull/26
The failing test `JmsConnectionCloseVariationsTest.testCloseBeforeBrokerStoppedRepeated` seems that is not allocating any `FifoMessageQueue`: i suppose its failure is indipendent by this PR.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org
[GitHub] qpid-jms issue #26: QPIDJMS-430 Lock-Free FifoMessageQueue
Posted by franz1981 <gi...@git.apache.org>.
Github user franz1981 commented on the issue:
https://github.com/apache/qpid-jms/pull/26
I have TBH that I'm not getting such a big boost as I was expecting, but probably because there are other bottlenecks (the consumer side on the broker) that are not' helping to measure it correctly: at least now `dequeueNoWait` is really a lock-free operation and if used could help to achieve a great performance boost.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org
[GitHub] qpid-jms issue #26: QPIDJMS-430 Lock-Free FifoMessageQueue
Posted by franz1981 <gi...@git.apache.org>.
Github user franz1981 commented on the issue:
https://github.com/apache/qpid-jms/pull/26
It won't work with JDK < 8 and is specific of oracle AFAIK (I could be wrong of course!)
---
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org
[GitHub] qpid-jms issue #26: QPIDJMS-430 Lock-Free FifoMessageQueue
Posted by franz1981 <gi...@git.apache.org>.
Github user franz1981 commented on the issue:
https://github.com/apache/qpid-jms/pull/26
Just as a reference: I'm getting about 80 M msg/sec with the new `FifoMessageQueue` while near 2.5 M msg/sec with the original one.
On a end-to-end test I'm getting a 20% more throughput with my machine (that has not many cores and not fast ones).
---
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org
[GitHub] qpid-jms issue #26: QPIDJMS-430 Lock-Free FifoMessageQueue
Posted by tabish121 <gi...@git.apache.org>.
Github user tabish121 commented on the issue:
https://github.com/apache/qpid-jms/pull/26
Yes, that test is exposing some issues in the 5.x broker which is unrelated to this change.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org
[GitHub] qpid-jms issue #26: QPIDJMS-430 Lock-Free FifoMessageQueue
Posted by jdanekrh <gi...@git.apache.org>.
Github user jdanekrh commented on the issue:
https://github.com/apache/qpid-jms/pull/26
Wouldn't `@Contended` annotation work just as well? http://mail.openjdk.java.net/pipermail/hotspot-dev/2012-November/007309.html (I just googled it...)
---
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org
[GitHub] qpid-jms issue #26: QPIDJMS-430 Lock-Free FifoMessageQueue
Posted by franz1981 <gi...@git.apache.org>.
Github user franz1981 commented on the issue:
https://github.com/apache/qpid-jms/pull/26
The reason behind the abstract classes for padding between fields to avoid false sharing (that could lead to a 1/10 of performance):
```
OFFSET SIZE TYPE DESCRIPTION VALUE
0 12 (object header) N/A
12 4 (alignment/padding gap)
16 8 long FifoMessageQueuePad0.p01 N/A
24 8 long FifoMessageQueuePad0.p02 N/A
32 8 long FifoMessageQueuePad0.p03 N/A
40 8 long FifoMessageQueuePad0.p04 N/A
48 8 long FifoMessageQueuePad0.p05 N/A
56 8 long FifoMessageQueuePad0.p06 N/A
64 8 long FifoMessageQueuePad0.p07 N/A
72 8 long FifoMessageQueuePad0.p10 N/A
80 8 long FifoMessageQueuePad0.p11 N/A
88 8 long FifoMessageQueuePad0.p12 N/A
96 8 long FifoMessageQueuePad0.p13 N/A
104 8 long FifoMessageQueuePad0.p14 N/A
112 8 long FifoMessageQueuePad0.p15 N/A
120 8 long FifoMessageQueuePad0.p16 N/A
128 8 long FifoMessageQueuePad0.p17 N/A
136 8 long FifoMessageQueueProducerFields.tail N/A
144 8 long FifoMessageQueueProducerFields.producerLimit N/A
152 8 long FifoMessageQueuePad1.p01 N/A
160 8 long FifoMessageQueuePad1.p02 N/A
168 8 long FifoMessageQueuePad1.p03 N/A
176 8 long FifoMessageQueuePad1.p04 N/A
184 8 long FifoMessageQueuePad1.p05 N/A
192 8 long FifoMessageQueuePad1.p06 N/A
200 8 long FifoMessageQueuePad1.p07 N/A
208 8 long FifoMessageQueuePad1.p08 N/A
216 8 long FifoMessageQueuePad1.p10 N/A
224 8 long FifoMessageQueuePad1.p11 N/A
232 8 long FifoMessageQueuePad1.p12 N/A
240 8 long FifoMessageQueuePad1.p13 N/A
248 8 long FifoMessageQueuePad1.p14 N/A
256 8 long FifoMessageQueuePad1.p15 N/A
264 8 long FifoMessageQueuePad1.p16 N/A
272 8 long FifoMessageQueuePad1.p17 N/A
280 8 long FifoMessageQueueConsumerFields.head N/A
288 8 long FifoMessageQueueConsumerFields.headLock N/A
296 4 int FifoMessageQueueConsumerFields.state N/A
300 4 (alignment/padding gap)
304 8 long FifoMessageQueuePad2.p01 N/A
312 8 long FifoMessageQueuePad2.p02 N/A
320 8 long FifoMessageQueuePad2.p03 N/A
328 8 long FifoMessageQueuePad2.p04 N/A
336 8 long FifoMessageQueuePad2.p05 N/A
344 8 long FifoMessageQueuePad2.p06 N/A
352 8 long FifoMessageQueuePad2.p07 N/A
360 8 long FifoMessageQueuePad2.p08 N/A
368 8 long FifoMessageQueuePad2.p10 N/A
376 8 long FifoMessageQueuePad2.p11 N/A
384 8 long FifoMessageQueuePad2.p12 N/A
392 8 long FifoMessageQueuePad2.p13 N/A
400 8 long FifoMessageQueuePad2.p14 N/A
408 8 long FifoMessageQueuePad2.p15 N/A
416 8 long FifoMessageQueuePad2.p16 N/A
424 8 long FifoMessageQueuePad2.p17 N/A
432 8 long FifoMessageQueueSharedFields.waitingThreads N/A
440 4 java.util.concurrent.locks.ReentrantLock FifoMessageQueueSharedFields.notEmptyLock N/A
444 4 java.util.concurrent.locks.Condition FifoMessageQueueSharedFields.notEmptyCondition N/A
448 8 long FifoMessageQueuePad3.p01 N/A
456 8 long FifoMessageQueuePad3.p02 N/A
464 8 long FifoMessageQueuePad3.p03 N/A
472 8 long FifoMessageQueuePad3.p04 N/A
480 8 long FifoMessageQueuePad3.p05 N/A
488 8 long FifoMessageQueuePad3.p06 N/A
496 8 long FifoMessageQueuePad3.p07 N/A
504 8 long FifoMessageQueuePad3.p08 N/A
512 8 long FifoMessageQueuePad3.p10 N/A
520 8 long FifoMessageQueuePad3.p11 N/A
528 8 long FifoMessageQueuePad3.p12 N/A
536 8 long FifoMessageQueuePad3.p13 N/A
544 8 long FifoMessageQueuePad3.p14 N/A
552 8 long FifoMessageQueuePad3.p15 N/A
560 8 long FifoMessageQueuePad3.p16 N/A
568 8 long FifoMessageQueuePad3.p17 N/A
576 8 long FifoMessageQueue.mask N/A
584 4 int FifoMessageQueue.lookAheadStep N/A
588 4 java.util.concurrent.atomic.AtomicReferenceArray FifoMessageQueue.messages N/A
```
---
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org
[GitHub] qpid-jms issue #26: QPIDJMS-430 Lock-Free FifoMessageQueue
Posted by jdanekrh <gi...@git.apache.org>.
Github user jdanekrh commented on the issue:
https://github.com/apache/qpid-jms/pull/26
Won't work with JDK < 8 is fine with qpid-jms, I think
https://github.com/apache/qpid-jms/blob/master/pom.xml#L37-L39
I'll check tomorrow if IBM JDK supports this. I am fairly sure OpenJDK will have it...
---
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org