Communicator e3000 MPE/iX Release 7.5 (Software Release C.75.00) (30216-90336)

Chapter 5
Technical Articles
TurboIMAGE Scalability II
127
TurboIMAGE Scalability II
by Tien-You Chen, Commercial Systems Division
The Put/Del semaphore is an internal lock, one for each database, used to serialize DBPUT, DBDELETE and
DBUPDATE (CIU) operation to ensure the physical integrity of the database. Because of the serialization,
TurboIMAGE may not be able to scale up well with the system growth. The TurboIMAGE scalability I (a.k.a.
DSEM) project was to replace the Put/Del semaphore by a set of dependency semaphores, one for each data
set, to increase the concurrency. TurboIMAGE scalability II (a.k.a. DSEMII or EHWM) is trying to manage
the internal lock at block level in order to gain better performance.
Data set User Label
Put/Del semaphore, dependency semaphores or block level semaphores are all internal runtime structures.
The duration of locking the semaphore(s) is short and does not extend across intrinsics. In addition to Put/Del
semaphore, another potential bottleneck is when adding or deleting a record to a detail data set,
TurboIMAGE needs to update information in the data set user label, which includes the high water mark,
delete chain head and number of free records in the data set. For each DBPUT, TurboIMAGE gets a record
either from the high water mark or delete chain head and decrements by one the number of free records.
The operation is similar for DBDELETE. TurboIMAGE returns the record to the delete chain head and
increases the number of free records by one. The information needs to be kept intact during the process of
modification. Either the Put/Del semaphore or DSEM can serve the need to lock out other processes, but that
is a bottleneck for DSEMII. In order to solve this problem, TurboIMAGE allocates an array in the user label,
which we name extended high water mark (EHWM). The first user, who adds to a detail data set triggers
TurboIMAGE to get 20 blocks beginning from the high water mark and to store those blocks in an array with
one block for each element. After that, each DBPUT can lock one element of the array instead of the whole user
label, hence increasing the concurrency. This EHWM sustains after database close. Only when the user
disables the feature via DBUTIL, are the unused records in those blocks returned to either the delete chain or
the high water mark. The EHWM will cease to exist.
DBUTIL Change
DBUTIL has a new option in ENABLE/DISABLE command to turn on/off this feature.
>>ENABLE database name/maint word FOR EHWM
After the user enables this feature and the first DBPUT to a detail data set, TurboIMAGE creates EHWM for
this data set. Internally, at runtime, DSEMII also uses features like prefetch, DSEM and HWM dbput. When
the user disables this feature, TurboIMAGE checks every detail data set in this database to destroy the
EHWM and return unused records.
NOTE When you do any kind of database maintenance work, such as restoring the database to an
early version of TurboIMAGE, restructuring the database or repacking the database, you have
to disable this feature.