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