YAMI - Yet Another Messaging Infrastructure
|
YAMI Home |
Implementation [Downloads] [Internal model] [Connection modes] [Performance] The following results are not up to date with recent YAMI distributions. In particular, simplex and duplex connection modes significantly vary in performance. New performance test results will be added soon.
Here, I present some of the performance test results with few words of
explanation. Disclaimer
This page is not supposed to advertise nor to mock any of the products
and should not be taken
as a very detailed and exhaustive description of any technology. The environmentThe environment used to test YAMI and compare it to other systems was:
While the test were running, no other application (apart from standard processes) was active. What was testedThe tests were written for:
The tests were run on the same machine to measure the actual overhead incurred by each infrastructure and on different operating systems. If the tests had been run across the network, the total cost of sending a message would have been dominated by the overhead introduced by each network hardware component (routers, switches, etc.) and the apparent performance of all the systems would have been almost equal. For example, when sending a message from the North Pole to the South Pole, it really does not matter what particular method was used to accomplish it. Running everything on the same machine shows how fast is the bare mechanics of each messaging infrastructure. The tests
The test application was a simple client-server system. The YAMI two-way tests were run in three Agent configurations:
(please refer to the YAMI Core Library Reference, for Policies documentation to learn about those configurations)
One should expect that synchronous messaging will be faster than normal
and that explicit event loops will be faster than synchronous
messaging. The tests should show the performance differences. Raw resultsThe diagram below presents the results for two-way messaging:
And this diagram presents the results for one-way messaging:
Explanation
CORBA:
YAMI: Please note the difference between the YAMI on Windows and on Linux. The library code is exactly the same and the Agent logic is based on the Operating System Layer. On Windows, the API calls are used for thread and network related operations. On Linux, the Posix threads library with API calls are used. Note that changing the configuration of the Agent (which reduces the number of threads involved in message delivery in the synchro model and in extreme does not use threads at all in events model) results in substantial speed-up in messaging. This is understandable and should be taken into account in performance-sensitive applications. Note that changes in speed with different configurations are much more visible on Linux and FreeBSD systems than on Windows. This is probably more interesting than the fact that YAMI on Linux is just faster than on Windows. My unconfirmed guess is that socket operations on Windows are a lot more expensive and dominate the total cost of messaging, so that reducing the threading and synchronization overhead has lower influence on the speed. The thing that requires some comment is also the fact that synchro model had slightly worse performance than the normal model when compiled with MS Visual C++ 7.0. There is probably no other explanation that some other process has influenced the results when that test was run. Anyway - everybody's got equal chances and it would be a dishonesty to repeat the test just to get the expected results. Final commentsOnly YAMI Core Library was taken for tests. This is because the C version of the YAMI library contains the core logic for message exchange and all the other libraries are only thin wrappers that do not introduce any significant overhead on their own. Or at least they should not. |