Archived

This forum has been archived. Please start a new discussion on GitHub.

Performance problems on RedHat Linux 2.4.21 kernel

Hi all,

I'm in the process of evaluating ICE to propose it as a middleware solution to be adopted in my current project.

I run some tests under windows 2000 and everything was fine. In the last couple of days I wanted to run some tests using some high performance RehHat linux machines (4 2.GHz processors with hyperthreading), and gcc 3.2.3; and I had some problems.

The first one was that the compilatrion halted because it couldn't find a definition for the DB_LOG_AUTOREMOVE macro while compiling Freeze. Since I didn't need Freeze, I put a definition to 1. The compilation then ended successfully (all the tests except the Freeze one passed).

However, when I run the tests the performance were incredibly low--an order of magnitude less than much smaller windows machines.

I was wondering if I missed something obvious, if not I can even post the c++ code I used for the tests.

Thanks,
Giovanni

Comments

  • The processors are 2.8 GHz

    Giovanni
    gasproni wrote:
    Hi all,

    I'm in the process of evaluating ICE to propose it as a middleware solution to be adopted in my current project.

    I run some tests under windows 2000 and everything was fine. In the last couple of days I wanted to run some tests using some high performance RehHat linux machines (4 2.GHz processors with hyperthreading), and gcc 3.2.3; and I had some problems.

    The first one was that the compilatrion halted because it couldn't find a definition for the DB_LOG_AUTOREMOVE macro while compiling Freeze. Since I didn't need Freeze, I put a definition to 1. The compilation then ended successfully (all the tests except the Freeze one passed).

    However, when I run the tests the performance were incredibly low--an order of magnitude less than much smaller windows machines.

    I was wondering if I missed something obvious, if not I can even post the c++ code I used for the tests.

    Thanks,
    Giovanni
  • marc
    marc Florida
    Which test or demo gave you bad performance? Did you compile with optimization? Which compiler flags did you exactly use?
  • marc
    marc Florida
    Also, which version of Ice are you using?
  • marc wrote:
    Also, which version of Ice are you using?

    Hi Marc,

    The test is one we've written internally, the ICE version is 2.1.2, and we used -DNDEBUG, and no -Ox optimization flags.

    Anyway, yesterday we spotted the problem: in that specific platform (Linux with gcc 3.2.3) we wrote a call

    IceUtil::ThreadControl::sleep( IceUtil::Time::milliSeconds( sleepMillis_ ) );

    This function was behaving strangely when sleepMillis_==0: it actually made the thread sleep for one second. We commented it out and everything was fine.

    I think it may be a bug in the compiler.

    Giovanni
  • marc
    marc Florida
    If you measure performance, it's very important that you use -O2 or -O3. Without optimization enabled, Ice is much slower, in particular because of the STL.
  • ICE was compiled out of the box with optimization turned on. Our code wasn't, however the performances were amazing :-)

    Giovanni
  • bernard
    bernard Jupiter, FL
    Regarding the DB_LOG_AUTOREMOVE problem, it's probably because the version of Berkeley DB you have installed is too old.
    DB_LOG_AUTOREMOVE was introduced in Berkeley DB 4.2; Ice needs 4.2 or 4.3.

    Bernard