You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Kim van der Riet (JIRA)" <ji...@apache.org> on 2011/04/07 22:14:05 UTC
[jira] [Created] (QPID-3191) C++ broker performance: scaling subs
on single pub queue through direct exchange (mode 1-1-N) shows poor
performance
C++ broker performance: scaling subs on single pub queue through direct exchange (mode 1-1-N) shows poor performance
--------------------------------------------------------------------------------------------------------------------
Key: QPID-3191
URL: https://issues.apache.org/jira/browse/QPID-3191
Project: Qpid
Issue Type: Bug
Reporter: Kim van der Riet
Assignee: Kim van der Riet
Setting up a broker on one machine and qpid-perftest on another shows poor scaling of multiple subscribers to a single queue.
Broker:
./qpidd --auth no -m no --max-connections 65100 --load-module /path/to/store/msgstore.so --store-dir /tmp --jfile-size-pgs 64 --num-jfiles 12 --log-enable info+
Client:
./qpid-perftest --mode shared --summary --pub-confirm no --sync-publish no --sub-ack 0 -b 20.0.10.43 --npubs 1 --qt 1 --nsubs XX --count 1000000 (--durable yes)
with XX being the progression ( 1 3 10 30 100 300 1000 3000 10000 )
This test shows that the broker performance collapses from a peak of about 120k broker transfers/sec at 30 subs to 5k broker transfers/sec at 10000 subs. Analysis shows that the broker is spending most of its time adding and removing Consumer objects from the QueueListeners std::vector container at these higher sub levels. Additionally, several other improvements to the QueueListeners class can be made which would improve efficiency.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org
[jira] [Commented] (QPID-3191) C++ broker performance: scaling subs
on single pub queue through direct exchange (mode 1-1-N) shows poor
performance
Posted by "Kim van der Riet (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/QPID-3191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13017428#comment-13017428 ]
Kim van der Riet commented on QPID-3191:
----------------------------------------
Thanks for the comments on Review Board. I have added a revised patch based on these comments.
> C++ broker performance: scaling subs on single pub queue through direct exchange (mode 1-1-N) shows poor performance
> --------------------------------------------------------------------------------------------------------------------
>
> Key: QPID-3191
> URL: https://issues.apache.org/jira/browse/QPID-3191
> Project: Qpid
> Issue Type: Bug
> Reporter: Kim van der Riet
> Assignee: Kim van der Riet
> Attachments: QueueListener vector vs deque comparison.pdf
>
>
> Setting up a broker on one machine and qpid-perftest on another shows poor scaling of multiple subscribers to a single queue.
> Broker:
> ./qpidd --auth no -m no --max-connections 65100 --load-module /path/to/store/msgstore.so --store-dir /tmp --jfile-size-pgs 64 --num-jfiles 12 --log-enable info+
> Client:
> ./qpid-perftest --mode shared --summary --pub-confirm no --sync-publish no --sub-ack 0 -b 20.0.10.43 --npubs 1 --qt 1 --nsubs XX --count 1000000 (--durable yes)
> with XX being the progression ( 1 3 10 30 100 300 1000 3000 10000 )
> This test shows that the broker performance collapses from a peak of about 120k broker transfers/sec at 30 subs to 5k broker transfers/sec at 10000 subs. Analysis shows that the broker is spending most of its time adding and removing Consumer objects from the QueueListeners std::vector container at these higher sub levels. Additionally, several other improvements to the QueueListeners class can be made which would improve efficiency.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org
[jira] [Commented] (QPID-3191) C++ broker performance: scaling subs
on single pub queue through direct exchange (mode 1-1-N) shows poor
performance
Posted by "Kim van der Riet (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/QPID-3191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13017135#comment-13017135 ]
Kim van der Riet commented on QPID-3191:
----------------------------------------
Proposed patch at https://reviews.apache.org/r/565/
> C++ broker performance: scaling subs on single pub queue through direct exchange (mode 1-1-N) shows poor performance
> --------------------------------------------------------------------------------------------------------------------
>
> Key: QPID-3191
> URL: https://issues.apache.org/jira/browse/QPID-3191
> Project: Qpid
> Issue Type: Bug
> Reporter: Kim van der Riet
> Assignee: Kim van der Riet
>
> Setting up a broker on one machine and qpid-perftest on another shows poor scaling of multiple subscribers to a single queue.
> Broker:
> ./qpidd --auth no -m no --max-connections 65100 --load-module /path/to/store/msgstore.so --store-dir /tmp --jfile-size-pgs 64 --num-jfiles 12 --log-enable info+
> Client:
> ./qpid-perftest --mode shared --summary --pub-confirm no --sync-publish no --sub-ack 0 -b 20.0.10.43 --npubs 1 --qt 1 --nsubs XX --count 1000000 (--durable yes)
> with XX being the progression ( 1 3 10 30 100 300 1000 3000 10000 )
> This test shows that the broker performance collapses from a peak of about 120k broker transfers/sec at 30 subs to 5k broker transfers/sec at 10000 subs. Analysis shows that the broker is spending most of its time adding and removing Consumer objects from the QueueListeners std::vector container at these higher sub levels. Additionally, several other improvements to the QueueListeners class can be made which would improve efficiency.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org
[jira] [Updated] (QPID-3191) C++ broker performance: scaling subs
on single pub queue through direct exchange (mode 1-1-N) shows poor
performance
Posted by "Kim van der Riet (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/QPID-3191?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kim van der Riet updated QPID-3191:
-----------------------------------
Attachment: QueueListener vector vs deque comparison.pdf
Performance graphs for original and proposed patch.
> C++ broker performance: scaling subs on single pub queue through direct exchange (mode 1-1-N) shows poor performance
> --------------------------------------------------------------------------------------------------------------------
>
> Key: QPID-3191
> URL: https://issues.apache.org/jira/browse/QPID-3191
> Project: Qpid
> Issue Type: Bug
> Reporter: Kim van der Riet
> Assignee: Kim van der Riet
> Attachments: QueueListener vector vs deque comparison.pdf
>
>
> Setting up a broker on one machine and qpid-perftest on another shows poor scaling of multiple subscribers to a single queue.
> Broker:
> ./qpidd --auth no -m no --max-connections 65100 --load-module /path/to/store/msgstore.so --store-dir /tmp --jfile-size-pgs 64 --num-jfiles 12 --log-enable info+
> Client:
> ./qpid-perftest --mode shared --summary --pub-confirm no --sync-publish no --sub-ack 0 -b 20.0.10.43 --npubs 1 --qt 1 --nsubs XX --count 1000000 (--durable yes)
> with XX being the progression ( 1 3 10 30 100 300 1000 3000 10000 )
> This test shows that the broker performance collapses from a peak of about 120k broker transfers/sec at 30 subs to 5k broker transfers/sec at 10000 subs. Analysis shows that the broker is spending most of its time adding and removing Consumer objects from the QueueListeners std::vector container at these higher sub levels. Additionally, several other improvements to the QueueListeners class can be made which would improve efficiency.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org
[jira] [Resolved] (QPID-3191) C++ broker performance: scaling subs
on single pub queue through direct exchange (mode 1-1-N) shows poor
performance
Posted by "Kim van der Riet (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/QPID-3191?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kim van der Riet resolved QPID-3191.
------------------------------------
Resolution: Fixed
Fixed with r.1090252. The QueueListeners std::vector was replaced with a std::deque, and a flag was added to Consumers which keeps track of whether that instance was registered for notifications.
Performance for the 10,000 sub transient case increased from around ~5k tr/sec to about ~100k tr/sec. The durable case also showed significant improvement. See attached graph.
> C++ broker performance: scaling subs on single pub queue through direct exchange (mode 1-1-N) shows poor performance
> --------------------------------------------------------------------------------------------------------------------
>
> Key: QPID-3191
> URL: https://issues.apache.org/jira/browse/QPID-3191
> Project: Qpid
> Issue Type: Bug
> Reporter: Kim van der Riet
> Assignee: Kim van der Riet
> Attachments: QueueListener vector vs deque comparison.pdf
>
>
> Setting up a broker on one machine and qpid-perftest on another shows poor scaling of multiple subscribers to a single queue.
> Broker:
> ./qpidd --auth no -m no --max-connections 65100 --load-module /path/to/store/msgstore.so --store-dir /tmp --jfile-size-pgs 64 --num-jfiles 12 --log-enable info+
> Client:
> ./qpid-perftest --mode shared --summary --pub-confirm no --sync-publish no --sub-ack 0 -b 20.0.10.43 --npubs 1 --qt 1 --nsubs XX --count 1000000 (--durable yes)
> with XX being the progression ( 1 3 10 30 100 300 1000 3000 10000 )
> This test shows that the broker performance collapses from a peak of about 120k broker transfers/sec at 30 subs to 5k broker transfers/sec at 10000 subs. Analysis shows that the broker is spending most of its time adding and removing Consumer objects from the QueueListeners std::vector container at these higher sub levels. Additionally, several other improvements to the QueueListeners class can be made which would improve efficiency.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org