On 09/24/2010 03:40 AM, Julien Lavigne du Cadet wrote:
Here's the output I have for a few run. The memory consumption pattern seems
quite different from yours but it doesn't increase linearly
I would say that this is not a memory leak (i.e. memory lost forever by the app)
but probably indicates significant memory fragmentation, i.e. there is a lot of
memory assigned to qpidd by the OS that is not actually in use but can be
re-used in the future. There is definitely scope to optimize qpid's use of
memory in general and fragmentation is one area to look at.
abcq...@abcqpid:~/qpid-0.5/cpp/src/tests$ while ps up `pgrep qpidd`; do
./perftest -s --username guest --password guest123 --size 64 --count 1000000 ;
done
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 0.0 0.0 244104 6020 ? Ssl 09:08 0:00 qpidd -d
123551 111219 223287 13.6284
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 31.2 2.1 487524 174900 ? Ssl 09:08 0:16 qpidd -d
122093 101291 203355 12.4118
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 53.6 3.5 562036 287208 ? Ssl 09:08 0:33 qpidd -d
127229 111748 223542 13.6439
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 69.5 3.4 562036 285792 ? Ssl 09:08 0:50 qpidd -d
128199 105704 212375 12.9623
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 82.4 5.3 758748 441024 ? Rsl 09:08 1:06 qpidd -d
123956 109960 219983 13.4267
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 92.7 4.1 627676 340588 ? Ssl 09:08 1:23 qpidd -d
129984 112129 224308 13.6907
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 100 5.0 693212 414732 ? Ssl 09:08 1:39 qpidd -d
107284 106511 213869 13.0535
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 106 4.1 693212 340740 ? Ssl 09:08 1:56 qpidd -d
101739 100153 200296 12.2251
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 112 4.3 693212 354076 ? Ssl 09:08 2:13 qpidd -d
128088 108798 217643 13.2839
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 117 5.5 776172 455168 ? Ssl 09:08 2:30 qpidd -d
129048 112187 225225 13.7466
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 121 4.7 758748 391288 ? Ssl 09:08 2:46 qpidd -d
128988 112805 225689 13.7749
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 124 5.2 758880 430636 ? Ssl 09:08 3:02 qpidd -d
131103 112403 225844 13.7845
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 128 5.9 824416 487504 ? Ssl 09:08 3:18 qpidd -d
129258 113177 226364 13.8162
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 130 4.9 758880 403288 ? Ssl 09:08 3:34 qpidd -d
120588 109785 219620 13.4046
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20167 133 5.3 758880 439848 ? Ssl 09:08 3:50 qpidd -d
-----Message d'origine-----
De : Alan Conway [mailto:[email protected]]
Envoyé : jeudi 23 septembre 2010 19:20
À : [email protected]
Cc : Julien Lavigne du Cadet
Objet : Re: Qpid C++ broker memory leak?
On 09/23/2010 08:43 AM, Julien Lavigne du Cadet wrote:
Hi,
I noticed something that looks like a memory leak with both qpid 0.5 and
0.6 on ubuntu (hardy) and I would like your feedback.
I have a test application that publishes small non persistent messages
as fast as possible.
Another application connects to the broker and creates a queue with auto
delete set to true. I don't read the message in order to fill the queue
with hundreds of thousands of messages. After a few seconds, the broker
consumes 2GB of memory and I kill both clients. I can see in qmf that
the queue is deleted correctly, however qpid will release only a very
small portion of the memory (for 2GB, it will be around 200MB). Waiting
doesn't change a thing. If I start both clients again, qpid memory
consumption will instantly increase. However, if I decide to read the
message (so that the message depth stay close to 0), the memory
consumption will stay low whatever happens.
I can reproduce this behaviour with both qpid 0.5 and qpid 0.6, with
durable and non-durable queues on 2 different servers running ubuntu.
However, on a windows server qpid releases the memory instantly when I
kill both clients.
I also see some similar behaviour when running perftests:
After running "./perftest --size 64 --count 1000000", qpid consumes
168Mb of memory (463MB virtual)
After running "./perftest --size 64 --count 1000000 -qt 10", qpid
consumes 832Mb of memory (1637MB virtual)
I don't see the same results as you, if I run perftest in a loop qpidd remains
stable at about 400Mb virtual memory (this is on latest trunk). If you run
perftest repeatedly do you see continuous growth over time? Note that freed
memory is not immediately returned to the OS, so some growth in qpidd size is to
be expected even if all messages have been removed from queues. However if you
see continuous growth over time then there probably is a leak to be
investigated.
$ while ps up `pgrep qpidd`; do qpid-perftest -s --size 64 --count 1000000 ;
done
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
aconway 10902 37.2 0.3 401544 52256 ? Ssl 12:59 1:26 qpidd
--auth=no -d
43269.3 42904.7 86263.5 5.26511
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
aconway 10902 50.2 0.2 398156 37440 ? Ssl 12:59 2:07 qpidd
--auth=no -d
40394.2 40248.7 80641.5 4.92196
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
aconway 10902 61.8 0.2 397716 37856 ? Ssl 12:59 2:52 qpidd
--auth=no -d
41445.9 41308.1 82771.1 5.05194
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
aconway 10902 70.9 0.2 395784 37304 ? Ssl 12:59 3:35 qpidd
--auth=no -d
40487.1 40336.8 80821.4 4.93294
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
aconway 10902 79.1 0.2 395784 37304 ? Ssl 12:59 4:20 qpidd
--auth=no -d
40717.5 40552.7 81255.8 4.95946
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
aconway 10902 85.9 0.2 395964 35260 ? Ssl 12:59 5:04 qpidd
--auth=no -d
40110.3 40026 80195.4 4.89474
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
aconway 10902 92.1 0.2 396868 37332 ? Ssl 12:59 5:49 qpidd
--auth=no -d
41388.6 41231.4 82746.6 5.05045
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
aconway 10902 97.5 0.2 395784 37840 ? Ssl 12:59 6:32 qpidd
--auth=no -d
42590 42440 85032.8 5.18999
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
aconway 10902 101 0.2 396824 38880 ? Ssl 12:59 7:14 qpidd
--auth=no -d
P Please consider your environmental responsibility before printing this email
*********************************************************************************
Ce message peut contenir des informations confidentielles.
Les idees et opinions presentees dans ce message
sont celles de son auteur, et ne representent pas necessairement
celles du groupe ABC arbitrage.
Au cas ou il ne vous serait pas destine,
merci d'en aviser l'expediteur immediatement et de le supprimer.
This message may contain confidential information.
Any views or opinions presented are solely those of its author
and do not necessarily represent those of ABC arbitrage.
If you are not the intended recipient,
please notify the sender immediately and delete it.
*********************************************************************************
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]