Compare commit times on SGI and ALPHA

A database with 350'000 objects is loaded under identical conditions on an SGI IRIX Release 6.2 and an ALPHA Digital UNIX V4.0.
On both systems, the harddisks are locally mounted. Under usual circumstances, the ALPHA outperforms the SGI by a factor of 2.

Total commit time

The total commit times in real time are given in the table below. The same data is loaded on both machines, committing after 10000 and 20000 objects.
A special loading procedure is used on the ALPHA where after 30000 committed objects the program exits and is restarted using a shell script.
The expected commit time for the ALPHA would be 35 minutes. This performance is really achieved using this mechanism. It is a silly thing, though,
having to exit and restart the program and one looses capability to keep information over the total loading time.
 
SGI 10000
SGI 20000
ALPHA 10000
ALPHA 20000
ALPHA 10000 with restart
commit times
1:08:26
1:10:54
3:45:35
3:11:27
0:37:03
 

Commit times during load

In the chart below are the commit times in seconds/object. Our data to load is coming in 535 tables, each table containing 500-1000 objects. These objects are large and lots of associations are being generated. A commit occurs after a certain table number is loaded, depending whether the limit (10000 or 20000 objects) has been reached and the time/object is displayed.

On the SGI, the behaviour is as expected: the commit time seems only to be depending upon the number of objects committed.
On the ALPHA, the commit time seems to be correlated to the total number of objects loaded so far. Since the IDENTICAL c++ code is running on both machines, this cannot be due to a program error and the times are measured by timing the commit() call only.
The restart-procedure gives the expected behaviour. It is as if Objectivity fails to clean up properly after a commit() on the ALPHA.

 

ooRunStatus output

The output of ooRunStatus (click to see a comparative sheet) looks almost identical for both machines. The only difference is in the parameters
number of containers opened
number of containers closed

The loading is done using the ooNewConts macro to generate an array of new containers which are named later.