Uploaded image for project: 'Qpid Proton'
  1. Qpid Proton
  2. PROTON-1687

Improve efficiency of the transport output buffer

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: proton-c-0.18.0
    • Fix Version/s: proton-c-0.19.0
    • Component/s: proton-c
    • Labels:

      Description

      As the size of the transport output buffer grows due to production of deliveries sent through pn_link_send, the amount of time that the CPU spends in memmove becomes a problem.

      It appears (dispatcher.c - pn_dispatcher_output) that whenever a block of data is removed from the buffer, the remainder of the data in the buffer is shifted down using memmove. If the buffer contains a large amount of data (100s of megabytes), the sending process may spend several minutes doing almost nothing but running memmove.

      Some data:
      (credit window of 250, unlimited session window, 1 MB payload)

      • 10 messages, .251 sec, 40 deliveries/sec
      • 20 messages, 1.267s, 16 dlv/s
      • 40 messages, 6s, 7 dlv/s
      • 80 messages, 28s, 3 dlv/s
      • 160 messages, 138s, ~1 dlv/s

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                astitcher Andrew Stitcher
                Reporter:
                tross Ted Ross
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: