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

Client becomes cpu bound in pn_buffer_rotate() on session flow control

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • proton-c-0.33.0, proton-c-0.35.0, proton-c-0.34.0, proton-c-0.36.0
    • None
    • proton-c
    • None

    Description

      While testing various AMQP session size limitations on the Qpid dispatch router I was able to cause a proton-c client to pin the CPU at 100% while in pn_buffer_rotate().

      This appears to be caused by lowering the incoming session window to a point where session flow control activates.  In the case of my reproducer I'm setting the window size to approx 600 16K frames ~9.8MB.  The client is sending ~1MB messages with a credit window of 250.

       

      See the attached flamegraphs of the sending client:

      First - this is baseline, no session limit (default provided by proton):

      big-session.svg

       

      This flamegraph shows the client's behavior with a session limit of 9.8MB:

      small-session.svg

       

      See comment for reproducer.

      Attachments

        1. big-session.svg
          127 kB
          Ken Giusti
        2. small-session.svg
          49 kB
          Ken Giusti
        3. qdrouterd.conf
          2 kB
          Ken Giusti

        Issue Links

          Activity

            People

              Unassigned Unassigned
              kgiusti Ken Giusti
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: