Many Db2 DBAs first hear about Task Control Blocks (TCBs) and Service Request Blocks (SRBs) in an IBM performance class, but not everyone has taken one of those classes. And even for those who have, a refresher is probably in order.
At a high level, for mainframe z/OS programs code can execute in one of two modes: TCB mode, also known as task mode, or SRB mode. Most programs execute under the control of a task. Each thread is represented by a TCB. A program can exploit multiple processors if it is composed of multiple tasks, as most programs are.
An SRB is a control block that represents a routine that performs
a particular function or service in a specified address space. SRBs are
lightweight and efficient but are available only to supervisor state software.
An SRB is similar to a TCB in that it identifies a unit of work to the system.
But an SRB cannot “own” storage areas. SRB routines can obtain, reference, use,
and free storage areas, but the areas must be owned by a TCB. SRB mode
typically is used by operating system facilities and vendor programs to perform
certain performance-critical functions.
In general, z/OS dispatches Db2 work in TCB mode if the request is
local, or in SRB mode if the request is distributed. These parallel tasks are
assigned the same importance as the originating address space. Of course, this is a gross generalization and as zIIPs have become ubiquitous more SRB mode work has been enabled (as only SRBs can run on the zIIP).
Preemptible enclaves are used to do the work on behalf of the
originating TCB or SRB address space. Enclaves are grouped by common
characteristics and service requests, and because they are preemptible, the
z/OS dispatcher—and Workload Manager—can interrupt these tasks for more
important ones. There are two types of preemptible SRBs: client SRBs and
enclave SRBs.
If the Db2 request is distributed DRDA workload, then it will be
executed in enclave SRBs. If the request is coming over a local connection,
then it will be dispatched between TCBs, client SRBs, and in some cases enclave
SRBs (such as for parallel queries and index maintenance).
What Is an Enclave?
An enclave is a construct that represents a transaction or unit of work.
Enclaves are a method of managing mainframe transactions for non-traditional
workloads. You can think of an enclave as an anchor point for resource
accumulation regardless of where the transaction is executing.
With traditional workloads, it is relatively easy to map the resources
consumed to the actual transaction doing the consumption. But with
non-traditional workloads (such as web transactions, distributed processing,
and so on) it can be more difficult because a transaction can span multiple platforms.
Enclaves are used to overcome this difficulty by correlating closely to the end
user’s view of the transaction.