[ https://issues.apache.org/jira/browse/DISPATCH-760?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16078643#comment-16078643 ]
ASF subversion and git services commented on DISPATCH-760: ---------------------------------------------------------- Commit 50637b770400e106bfb1c2e2ad7c57f8f8b2321e in qpid-dispatch's branch refs/heads/master from [~chug] [ https://git-wip-us.apache.org/repos/asf?p=qpid-dispatch.git;h=50637b7 ] DISPATCH-760: Change magic numbers into formal constants Router message annotation uses some of map keys and will at most use QD_MA_N_KEYS annotation entries. The longest key strlen is QD_MA_MAX_KEY_LEN bytes. Router message annotation keys are at the end of the annotation section. Code uses a sliding window to avoid searching each key for the router prefix that indicates a router annotation. The size of the sliding filter is QD_MA_FILTER_LEN map entries. When QD_MA_FILTER_LEN is larger than QD_MA_N_KEYS then the extra space may hold a future router version's new keys and successfully strip them from the input stream. > 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: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org