Uploaded image for project: 'Qpid Dispatch'
  1. Qpid Dispatch
  2. DISPATCH-1348

Avoid qdr_error_t allocation if not necessary

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.7.0
    • Fix Version/s: 1.8.0
    • Component/s: Routing Engine
    • Labels:
      None

      Description

      qdr_error_from_pn on error.c is allocating qdr_error_t on the hot path ie AMQP_disposition_handler: saving those allocations would reduce CPU usage (and cache misses) on both core and worker threads, making the router able to scale better while under load.
      Initial tests has shown some improvements under load (ie with core CPU thread ~97% with the new version and ~99% with master):

      12 pairs master (no lock-free queues, no qdr_error_t fix): 285 K msg/sec
      12 pairs master (no lock-free queues, yes qdr_error_t fix): 402 K msg/sec
      12 pairs lock-free q (no qdr_error_t fix): 311 K msg/sec
      12 pairs lock-free q (yes qdr_error_t fix): 510 K msg/sec

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                gmurthy Ganesh Murthy
                Reporter:
                nigro.fra@gmail.com Francesco Nigro
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: