For a upcoming project we needed some figures on MQSeries throughput 
to base a design decision on. Throughput is very crucial in this 
project. On the last weekend I've conducted some tests in this regard. 
Some of the results I would like to discuss here. 

Facts:

-       the tests where conducted on two Intel machines running W2K with 
        MQSeries 5.2, however, the project target platform will be SPARC/Solaris9
-       the machines used in this test are a PIV 2.8GH and a 2xPIII 450MH, 
        both 512MB, one has ultra fast SCSI HD's and one has a pretty fast 
        IDE-RAID5 (4x160G)
-       both machines where connected via 100MB LAN through a switch, which 
        had only the two machines connected to it
-       message size was 200 byte, I used a string made of repeated numbers 
        of 0 through 9
-       queues where not persistent
-       DOS based test applications are written in C++, using IBM's C++ 
        interface rather than straight C-API
-       the 'putting' application runs in a loop, checking the depth of the 
        transmission queue (avoiding overflow), if the depth is below a certain 
        level it puts the message into the remote queue, every n successful puts 
        the time is measured (through windows high frequency counter, very high 
        precision) and the average messages per seconds is put on the screen
-       the 'getting' application runs in a endless loop, with a blocking 'get' 
        on the (receiving) local queue, the same average measuring is implemented 
        as in the 'putting' app  


Results:

-       the best throughput was 3200msgs/sec measured with one putting application 
        and one getting application at a maximum queue depth of 5000 on both sides 
        (remote and transmission queue), CPU's on both sides where far below 100%
-       overall throughput went down when several 'putting' applications where 
        putting to the same queue (of course, taking the sum of all screen outputs)


Questions:

-       what actually limits the throughput? the number of msgs/sec times the size 
        in this case results in the best case to 625kB/sec which is far beyond the 
        practical throughput of the mentioned LAN
-       is it a correct observation that synchronizing several applications putting 
        into the same queue causes considerably overhead? if so, can this be assumed 
        the same way under SPARC/Solaris9 ?
-       when the max queue depth is set to a high number (e.g. 500000), throughput 
        goes down to a fraction of the max throughput, MQSeries process amqzlaa0.exe 
        'eats' up a lot of CPU power in this case - it seams like that managing a 
        lot of messages in a queue causes also relatively large overhead - is this 
        correct and how does it translate in generally to SPARC/Solaris9 ?
-       what are the recommendations for the setup of MQSeries (installation itself, 
        queues, channels, processes ect.) as well as the message processing 
        (applications) where throughput is the only thing that matters? 


Thanks in advance,
Enrico Fichtner

Instructions for managing your mailing list subscription are provided in
the Listserv General Users Guide available at http://www.lsoft.com
Archive: http://vm.akh-wien.ac.at/MQSeries.archive

Reply via email to