[
https://issues.apache.org/jira/browse/DISPATCH-760?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16073861#comment-16073861
]
ASF GitHub Bot commented on DISPATCH-760:
-----------------------------------------
GitHub user ChugR opened a pull request:
https://github.com/apache/qpid-dispatch/pull/171
DISPATCH-760: Message annotation handling improvements
This PR replaces existing annotation handling with a more efficient
version. It is fully compatible with 0.8.x.
A comparison with 0.8.x has run on a single laptop. A sender sends a short
message with a varying number of 10-byte user annotations to an ingress router
A. Router A sends the messages to egress router B. A single client is attached
to router B. This comparison is not rigorous and at the
50-annotation-per-message level the producer started to be the limiting factor.
Messages per second. Number of annotations, Nanno, vs router code version,
0.8.x or new.
| Nanno | 0.8.x | new |
|----------|-----------|--------|
| 0 | 26500 | 33700 |
| 1 | 24000 | 33100 |
| 5 | 18000 | 31300 |
| 10 | 14200 | 29700 |
| 20 | 8200 | 25200 |
| 50 | 3500 | 11700 |
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/ChugR/qpid-dispatch crolke-DISPATCH-760-2
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/qpid-dispatch/pull/171.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 #171
----
commit 3e2809f36130f210d0baa8391ca8d3ab4a3d6851
Author: Chuck Rolke <[email protected]>
Date: 2017-06-30T15:04:17Z
DISPATCH-760: accessor for connection status: interrouter vs user
commit f3707789d7fa5c598bc564b47d47f1893f74c495
Author: Chuck Rolke <[email protected]>
Date: 2017-06-30T15:46:43Z
DISPATCH-760: add opaque compose map item insertion functions
commit f24bf97d5a90f278a7f1700bc0c0d109094fbc06
Author: Chuck Rolke <[email protected]>
Date: 2017-06-30T15:56:08Z
DISPATCH-760: promote pointer_t to public qd_iterator_pointer_t
commit a9d0aff33a7416d9bf6640abce11a3b4080758ec
Author: Chuck Rolke <[email protected]>
Date: 2017-06-30T16:30:35Z
DISPATCH-760: Add prefix search functions that use iterator pointers
commit 4698f2fe226506d78d39bb31cfbfa853d876ad9a
Author: Chuck Rolke <[email protected]>
Date: 2017-06-30T20:57:17Z
DISPATCH-760: Add new annotation parser
commit feaf1ce1bf5ba69bed4c59c9928e19415da28577
Author: Chuck Rolke <[email protected]>
Date: 2017-07-01T19:01:56Z
DISPATCH-760: Message handling uses new scheme
commit 6de0c999cc00affe57cd82410692ab2f824acf02
Author: Chuck Rolke <[email protected]>
Date: 2017-07-01T19:51:00Z
DISPATCH-760: compare key names using strcmp not iter_equal
commit 162ae8db5c434017181c13c009a2c18fcd653d0a
Author: Chuck Rolke <[email protected]>
Date: 2017-07-03T15:23:39Z
DISPATCH-760: Get self tests going
Get rid of is_interrouter flag in favor of existing strip_annotations flags.
Pass strip_annotations_in through message to parse function.
commit aaeb03006d136d3dc09e004b07cb2285906e8f3c
Author: Chuck Rolke <[email protected]>
Date: 2017-07-03T16:05:36Z
DISPATCH-760: Fix inbound annotation stripping
----
> Inefficiencies handling message annotations
> -------------------------------------------
>
> Key: DISPATCH-760
> URL: https://issues.apache.org/jira/browse/DISPATCH-760
> Project: Qpid Dispatch
> Issue Type: Bug
> Affects Versions: 0.8.0
> Environment: Fedora 25 laptop
> Single router, 8 worker threads, single receiver, single sender. Messages
> have 200 100-byte annotations.
> Reporter: Chuck Rolke
> Assignee: Chuck Rolke
> Attachments: DISPATCH-760-ALL-WORKERS.svg,
> DISPATCH-760-core-thread.svg
>
>
> The router as a whole spends a lot of time managing annotations. With routers
> and other intermediaries adding and stripping annotations, improvements in
> this area could be valuable.
> Testing a stand-alone router gets these results.
> ||N 100-byte annotations || msg/S throughput||
> | 0 | 30,000 |
> | 1 | 22,500 |
> | 2 | 20,500 |
> | 5 | 15,500 |
> | 10 | 10,000 |
> | 20 | 5,500 |
> | 50 | 2,400 |
> | 100 | 1,200 |
> | 200 | 500 |
> Application 'perf' provides some visibility into where the threads are
> spending their time. View the attached .svg files to see what the core thread
> and an aggregation of the remaining threads are busy doing.
> The worker threads are spending ~85% of their time composing messages while
> the core thread is spending 90+% of its time deleting deliveries with a
> majority of its time in qd_parse_free().
> A 'top' thread snapshot shows several worker threads completely idle. The
> core thread has tid=32631.
> {noformat}
> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
> 32633 chug 20 0 858376 137708 8484 R 26.7 0.9 0:33.99 qdrouterd
> 32632 chug 20 0 858376 137708 8484 S 20.0 0.9 0:34.63 qdrouterd
> 32631 chug 20 0 858376 137708 8484 S 13.3 0.9 0:30.13 qdrouterd
> 32635 chug 20 0 858376 137708 8484 R 13.3 0.9 0:34.26 qdrouterd
> 32636 chug 20 0 858376 137708 8484 S 13.3 0.9 0:34.80 qdrouterd
> 32638 chug 20 0 858376 137708 8484 S 13.3 0.9 0:34.34 qdrouterd
> 32616 chug 20 0 858376 137708 8484 S 6.7 0.9 0:35.48 qdrouterd
> 32634 chug 20 0 858376 137708 8484 S 6.7 0.9 0:34.09 qdrouterd
> 32637 chug 20 0 858376 137708 8484 S 6.7 0.9 0:34.42 qdrouterd
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]