book
Article ID: KB0086667
calendar_today
Updated On:
Description
Resolution:
In general, the EMS server uses more than one processor.
However, for all in-memory messaging, i.e. all message processing that does not involve disk I/O operations, the EMS server uses only one processor.
Use of a single processor for handling messages was a design decision made after much experimentation and careful evaluation. This is the fastest implementation we have found, and it delivers the best performance.
Extending the server implementation to use more processors, while maintaining performance, is not something we see as being possible currently. As a result, the architecture makes use of a single thread for message processing and supporting threads for handling synchronous disk I/O, connection handshakes etc. This way the supporting threads manage everything that is not critical to message processing, without interrupting message processing.
While TIBCO does not make an official claim about EMS performance in comparison to other messaging systems (nor do we publish performance numbers), we (and many of our customers) are of the opinion that EMS delivers a performance that exceeds that of other comparable messaging systems (this does not include multicast-based systems similar to TIBCO Rendezvous). Often EMS out-performs, sometimes multi-fold, other systems that utilise more processors.
Through testing we have found that,
1. EMS, using one or two processors at most, often out-performs other systems running on more powerful hardware. This can potentially lead to significantly lower hardware costs, in comparison to the needs of competing messaging systems.
2. If the performance of a single EMS server is not sufficient, it is possible to deploy two or more instances of EMS servers on a single machine, in order to take full advantage of multiple CPUs. For example, two EMS servers running on four-CPU machine will never compete for processors regardless of message rates.
Currently, we have no plans to change the server architecture and/or implementation to use more processors.
Issue/Introduction
Why does the EMS server appear to use only one processor on multiprocessor systems?