----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/21483/#review43477 -----------------------------------------------------------
Ship it! /trunk/qpid/cpp/src/qpid/broker/Message.h <https://reviews.apache.org/r/21483/#comment77640> Some easy things to try, might shave a few bytes off: - Sort Message members by alignment, 64 bit integers first, then pointers, then 32 ints, etc. Maybe the compiler will pack them better. - Put these last and use bit fields: MessageState state:4; bool alreadyAcquired:1; /trunk/qpid/cpp/src/qpid/broker/Message.cpp <https://reviews.apache.org/r/21483/#comment77635> I think we can get rid of expirationPolicy, it was only used by old cluster. - Alan Conway On May 20, 2014, 11:46 a.m., Gordon Sim wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/21483/ > ----------------------------------------------------------- > > (Updated May 20, 2014, 11:46 a.m.) > > > Review request for qpid, Alan Conway, Andrew Stitcher, and Pavel Moravec. > > > Repository: qpid > > > Description > ------- > > Previous releases (e.g. 0.18) used to shared almost all message state. This > was not correct and the current codebase only shares the incoming message as > read off the wire. However, this leads to higher memory consumption in the > fanout case. > > There are some optimisations we could make to that. Two different changes are > included in this patch for review and comment. With these both in place, 1000 > messages shared between 500 queues dropped from taking around 81k to taking > around 43k as compared with the 0.18 release which took around 27k. > > The two changes are: > > (1) share some of the immutable items that don't arrive over the wire but > don't need to be changed per queue, e.g. expiration and publisher > > (2) make the annotations map (which seems to take a large amount of memory > even when empty) optional using a custom template (the boost optional > template doesn't save any memory). > > > Diffs > ----- > > /trunk/qpid/cpp/src/qpid/broker/Message.h 1594633 > /trunk/qpid/cpp/src/qpid/broker/Message.cpp 1594633 > /trunk/qpid/cpp/src/qpid/broker/PagedQueue.cpp 1594633 > /trunk/qpid/cpp/src/qpid/broker/RecoveryManagerImpl.cpp 1594633 > /trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp 1594633 > /trunk/qpid/cpp/src/qpid/broker/SessionState.cpp 1594633 > /trunk/qpid/cpp/src/qpid/broker/amqp/Incoming.cpp 1594633 > /trunk/qpid/cpp/src/qpid/broker/amqp/Message.h 1594633 > /trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.h 1594633 > /trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp 1594633 > /trunk/qpid/cpp/src/tests/MessageUtils.h 1594633 > /trunk/qpid/cpp/src/tests/QueueTest.cpp 1594633 > > Diff: https://reviews.apache.org/r/21483/diff/ > > > Testing > ------- > > make test passes > > > Thanks, > > Gordon Sim > >
