Go Back   ZeroC Forums > Comments

Reply
 
LinkBack Thread Tools Rate Thread Display Modes
  #1 (permalink)  
Old 09-17-2003
ChMeessen ChMeessen is offline
Registered User
 
 
Join Date: Sep 2003
Location: Marseille
Posts: 11
Question Ice performance ?

Hello,

I have just been informed that TAO is faster than Ice. It was said there is a comment in the forum but the search tool refuses to search for words shorter then 4 letters.

Are there some benchmarks comparing Ice with other ORBs. From a recent study in our project it appeared that omniORB might be the faster CORBA ORB.
Reply With Quote
  #2 (permalink)  
Old 09-17-2003
marc's Avatar
marc marc is offline
ZeroC Staff
 
Name: Marc Laukien
Organization: ZeroC, Inc.
Project: The Internet Communications Engine
 
Join Date: Feb 2003
Location: Florida
Posts: 1,772
Have a look at the following thread :

Performance

As you can see from these independent benchmark figures, Ice is faster in some areas, and Tao in others. Also note that different concurrency models are compared in some tests.

The upcoming Ice 1.2 has further performance improvements. We believe that Ice will then be faster than Tao in basically all areas, provided that tests use equivalent concurrency models for Ice and Tao.

Also note that most tests assume high-bandwith, low-latency connections. If you have remote internet users, with relatively low bandwith, then Ice will definitely be faster than any CORBA ORB, because of the more compact encoding, and the ability to compress data before it hits the wire.
Reply With Quote
  #3 (permalink)  
Old 09-17-2003
ChMeessen ChMeessen is offline
Registered User
 
 
Join Date: Sep 2003
Location: Marseille
Posts: 11
Hello,

well according to the study that was made for our project the marshalling time is apparently only a small fraction of the overall transaction time over 100mbit/s link.

Beside the omniORB outperforms TAO on many aspects. Some anecdoticals are the size of source tree for instance :
TAO 329 MB and OmniORB 17.

Note however that omniORB does not support passing objects by value and portable interceptors (don' know what that might be).

Size of base libraries are TAO 7.2 MB and OmniORB 1.7.
Installation size is 32 MB for TAO and 11MB for OmniORB.

For basic calls like void method call without parameters, apparently OmniORB is nearly twice faster then TAO !

So one should probably consider to also use omniORB as performance reference.

What I don't understant is where does this performance difference come frome. It is huge for MicoORB for instance which was the slowest in all tests.

When I read the forum thread where it was shown that Ice was slower than TAO I was puzzled. Because it means it may be even slower than omniORB. Where could this come from ?

I only see two possible spots of performance losses : data copying and memory allocation. In multithreaded application, thread synchronisation can also be a source of delay.

Unfortunately I can't publish the report. It is still a draft and an organisation internal study. Though I would be interrested to here some comments on the reported informations.
Reply With Quote
  #4 (permalink)  
Old 09-17-2003
marc's Avatar
marc marc is offline
ZeroC Staff
 
Name: Marc Laukien
Organization: ZeroC, Inc.
Project: The Internet Communications Engine
 
Join Date: Feb 2003
Location: Florida
Posts: 1,772
I used to implement a high-speed ORB, that was faster than OmniORB. However, comapring this ORB (or OmniORB for that matter) with TAO or Ice is comparing apples with oranges.

You can get latency down drastically if you choose simpler concurrency models. For example, if you use a blocking client-side concurrency model, latency *will* go down. However, the drawback is that you cannot do nested method calls.

Similarily, there are server-side thread models that are faster than our leader-follower thread pool model, for example "thread per connection". As far as I know, OmniORB uses a blocking client-side concurrency model, and thread-per-connection as server-side concurrency model. (At least that used to be true in the past, I didn't follow the OmniORB development closely.)

So if you compare performance, in particular latency, you must make sure that you have comparable concurrency models. Everything else is comparing apples with oranges.

As for the difference between TAO and Ice, there are two main reasons:
  • First of all, we didn't optimize some marshalling code in Ice 1.0 and Ice 1.1. This code is much better optimized in the upcoming 1.2. So expect better performance numbers in 1.2.
  • The test was done using different concurrency models. We could easily add a blocking client-side model, which would make a big difference, just to look better in performance tests. However, since such a model is of limited use, we rather don't want to do this.
Reply With Quote
  #5 (permalink)  
Old 09-25-2003
ChMeessen ChMeessen is offline
Registered User
 
 
Join Date: Sep 2003
Location: Marseille
Posts: 11
Hello,

I have looked at omniORB documentation. The first chapter of the user documentation gives a clear picture of the situation.

You are right about the multithreaded model. The omniORB performance reported by our study may be explianed by this on thread per connection model. This requires that they are multiple tcp connections between two process if concurrency is required. But it is said that they cache connections so the number of parallel connections should not be more than the number of concurrent transactions. In version 4.0 they now also support a thread pool model so they remove the scalability problem which as you know is my obssession.

A good news for Ice and ORBs using the more general multithreading model is that a change in linux kernel 2.6 should strongly reduce the thread context switch overhead. A patch for 2.4.x is already available with the required changes to the kernel. The patch is named something like "low latency". I can get a precise reference on this if desired. There is also an article on it in some linux expert journal.

So the performance difference between Ice and other ORBs due to thread context switching will problably shrink in the near future.

You wrote that you implemented a faster ORB than omniORB. How would Ice compare to it ? My understanding is that beside thread latencies, it is the encoding that would make the performance difference. What are the performance differences betwen Ice and CORBA regarding encoding ?
Reply With Quote
  #6 (permalink)  
Old 09-25-2003
marc's Avatar
marc marc is offline
ZeroC Staff
 
Name: Marc Laukien
Organization: ZeroC, Inc.
Project: The Internet Communications Engine
 
Join Date: Feb 2003
Location: Florida
Posts: 1,772
Quote:
Originally posted by ChMeessen

You are right about the multithreaded model. The omniORB performance reported by our study may be explianed by this on thread per connection model. This requires that they are multiple tcp connections between two process if concurrency is required. But it is said that they cache connections so the number of parallel connections should not be more than the number of concurrent transactions. In version 4.0 they now also support a thread pool model so they remove the scalability problem which as you know is my obssession.
Even more impact has the client-side concurrency model, i.e., how does the client side receive responses. The most simple model is also the most efficient: The thread that sends a request also receives the response. This is a blocking client-side concurrency model. However, since the thread locks the connection while it blocks, no concurrent calls are possible over the same connection, and thus no nesting. You must use more than one connection if you need concurrent or nested calls.

Quote:
Originally posted by ChMeessen

You wrote that you implemented a faster ORB than omniORB. How would Ice compare to it ? My understanding is that beside thread latencies, it is the encoding that would make the performance difference. What are the performance differences betwen Ice and CORBA regarding encoding ?
The CORBA ORB I co-authored had lower latency than both Ice and OmniORB. However, this is comparing apples with oranges: This ORB had the simpler concurrency model, and also didn't have features such as collocation optimization (which meant all calls go over the wire). For some domains, which require such super-low latency, this is a reasonable tradeoff. For other domains, you cannot work with such a concurrency model.

As for the encoding, I don't think it matters at all if you measure latency. For short messages, the encoding is not very important, because there is not much to encode.

As for long messages, I don't think the encoding has a lot of impact on very fast networks, because message size doesn't matter that much on such networks. However, if you use slower connections, like DSL or even modem, the more compact encoding of Ice will definitely be an advantage.
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
about performance fengxb Help Center 7 01-12-2007 05:55 AM
what performance ice vs ace? BSanLang Comments 1 10-13-2006 02:20 PM
Performance Ivan Help Center 28 04-12-2005 06:46 AM
Ice Performance marc Announcements 0 03-28-2005 07:29 PM
Ice vs. JNI throughput performance? brian Help Center 4 06-11-2004 01:17 AM


All times are GMT -4. The time now is 04:38 PM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.0.0
(c) 2008 ZeroC, Inc.