As you might assume, the operating system uses transactional execution.

A caveat: you cannot use it unconditionally. Even if you know you are on 
the right machine. One reason for that is that it cannot be used if z/OS 
is running on/under VM. Another is that we have given the customer a knob 
to ask that transactional execution not be used when they are migrating to 
a new machine and really want, first, to make sure that the machine works 
before worrying about whether new code paths in the software also work. 
This is the MACHMIG statement of the LOADxx parmlib member. You must pay 
attention to the PSA/CVT bit (you can choose which you want to look at) 
which is on when available.

Transactional execution is used, for example, within supervisor, IOS, RSM. 
It is what makes "contractible CPOOL" possible and available.

We tend to look for cases where we can use TBEGINC rather than TBEGIN. 
That is because any use of TBEGIN requires accepting the possibility of 
too many aborts, and providing "traditional serialization" in the fallback 
path. And this means that the user of a transaction must also serialize 
against the user of "traditional serialization". "Traditional 
serialization" could be the local lock, an ENQ, a latch, etc.

One of the use cases is to avoid coarse-grained serialization when 
fine-grained serialization will do. The LOCAL lock is a case of 
coarse-grained serialization. It serializes lots of stuff. But sometimes 
you might be using it to serialize only "your stuff". Yet you are still 
contending for the resource with other users of the LOCAL lock, so could 
be adversely impacted by those cases (and your usage could adversely 
impact others). If you can use TBEGIN(C),  you no longer need to contend 
with other users of the LOCAL lock.

This is a performance-related facility. Performance needs should dictate 
how much you choose to use it.

Peter Relson
z/OS Core Technology Design


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to