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

Profiling indicates that cgo becomes a bottleneck during scale testing of electron

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • proton-c-0.24.0
    • proton-c-0.27.0
    • go-binding
    • None

    Description

      While performing scale testing, detailed profiling of Go test clients showed that >95% of the execution time can be devoted to the cgo call.  The issues seems to be related on sends to the NewMessage() call.  For receives, the bottleneck is both NewMessage() and the call to actually receive the message.  

       

      This behavior is not unexpected as CGO is a well-known bottleneck.  Would it be possible to have a NewMessage() call that return multiple messages and a recv call that took an "At most" argument.  i.e. recv(10) would receive 10 or fewer messages that might be waiting in the queue.  Also, it would be nice to be able to trade latency for throughput in that the callback wasn't triggered until N messages were recieved (with timeout)....

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            aconway Alan Conway
            atyronesmith Aaron Smith
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment