Hide Forgot
TCPConnector allocates 32 buffers of 64k each which is probably excessive and should be reduced (perhaps made configurable?).
4 is probably a good place to start (see line 120 of TCPConnector.cpp)
Created attachment 481690 [details] patch to reduce the number of buffers created on the client
Kim, could you verify whether or not the attached patch has any negative impact on some perftest runs?
Test on mrg42; RHEL-6; In-tree build of r.1072197/r.4440 (+ patch). Broker: ./qpidd --auth no --log-enable info+ Client: for f in 1 2 3 4 5; do ./qpid-perftest --mode shared --summary --qt 4 --npubs 4 --nsubs 4; done Results before change: 10661.6 8534.17 227919 222.577 8439.52 8425.63 268624 262.328 10598.1 8467.45 225589 220.302 8420.7 8415.94 267710 261.436 8369.25 8354.81 266677 260.427 Results after change: 8513.25 8498.17 269888 263.562 8479.66 8477.36 268835 262.534 10647.2 8516.59 228754 223.393 8425.3 8413.05 266922 260.666 10683.7 8503.88 227678 222.341 Client: for f in 1 2 3 4 5; do ./qpid-perftest --mode topic --summary --npubs 2 --nsubs 10; done Results before change: 6882.55 13735.5 151231 147.687 7037.34 14051.4 154701 151.075 7125.92 14201.4 156371 152.706 7050.94 14056.7 154783 151.155 7307.85 14588.1 160618 156.854 Results after change: 6975.15 13894.9 152977 149.392 7041.73 14048 154672 151.046 7152.87 14253 156912 153.235 7288.23 14530.9 160001 156.251 7120.31 14205.2 156423 152.757 These look almost identical
Thanks Kim! Committed that patch upstream as r1076205.
The issue has been fixed (by reduction of number of TCPConnector's buffers), tested on RHEL 5.6 6.1s5 i[36]86 / x86_64 on packages: python-qpid-0.10-1.el5.noarch python-qpid-qmf-0.10-6.el5.x86_64 qpid-cpp-client-0.10-4.el5.x86_64 qpid-cpp-client-devel-0.10-4.el5.x86_64 qpid-cpp-client-devel-docs-0.10-4.el5.x86_64 qpid-cpp-client-rdma-0.10-4.el5.x86_64 qpid-cpp-client-ssl-0.10-4.el5.x86_64 qpid-cpp-mrg-debuginfo-0.10-4.el5.x86_64 qpid-cpp-server-0.10-4.el5.x86_64 qpid-cpp-server-cluster-0.10-4.el5.x86_64 qpid-cpp-server-devel-0.10-4.el5.x86_64 qpid-cpp-server-rdma-0.10-4.el5.x86_64 qpid-cpp-server-ssl-0.10-4.el5.x86_64 qpid-cpp-server-store-0.10-4.el5.x86_64 qpid-cpp-server-xml-0.10-4.el5.x86_64 qpid-dotnet-0.4.738274-2.el5.x86_64 qpid-java-client-0.10-4.el5.noarch qpid-java-common-0.10-4.el5.noarch qpid-java-example-0.10-4.el5.noarch qpid-qmf-0.10-6.el5.x86_64 qpid-qmf-debuginfo-0.10-6.el5.x86_64 qpid-qmf-devel-0.10-6.el5.x86_64 qpid-tests-0.10-1.el5.noarch qpid-tools-0.10-4.el5.noarch rh-qpid-cpp-tests-0.10-4.el5.x86_64 ruby-qpid-qmf-0.10-6.el5.x86_64 sesame-0.10-1.el5.x86_64 sesame-debuginfo-0.10-1.el5.x86_64 -> VERIFIED
There is seen quite difference between memory consumption on RHEL 6.1 x86_64 and the others, raised as separate bug 701269.
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHEA-2011-0890.html