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.