CICS sub-tasks DB2 activities to separate CPU. However, does this sub-tasking spread across all CPUs, or only one other CPU?
You do not have any control over which of n CPUs associated with the MVS image that any particular TCB will run on. It's entirely upto the whims of MVS and its scheduling algorithms as to which physical CPU a TCB will service upon (or from or on).
That being said, if you have multiple CPUs assigned to MVS, it's very probable that quite a lot of one CPU will be used by CICS because CICS tends to be doing something for most of the time (ie: apart from when it goes to sleep because there are no dispatchable CICS tasks in the CICS region).
Using DB2 v5 (soon to be out of service) and CICS TS 1.3, the TCBs used for DB2 access are chained off the QR TCB (the one which CICS does all it's work upon apart from VSAM Open/Close operations). In CICS TS 2.2 and DB2 V6/7, then the QR subtasks disappear to be replaced with L8 TCBs - which sit along side (not under) the QR TCB. This gives better performance as the QR TCB can be doing other work whilst DB2 activity is occuring.
This means that if the MVS image only has one CPU assigned, there will be no essential performance benefit in CICS TS 2.2 with DB2 v6/7 as cycles will be consumed by MVS changing oomph from the QR TCB to the L8 TCB. Thus, you should have at least two CPUs assigned to the MVS image to take advantage of this function.
Now, in a production environment, one of the important tuning functions is to ensure that there are enough CPUs assigned to the MVS image to properly service all workload. I'm not going to claim that one CPU per CICS is what is required. CICS is not usually CPU bound (ie I/O is occuring) so the CPU can quite happily be servicing more than CICS region - but it is the case that throughput can be adversely effected if there are not enough CPUs assigned to MVS.
This was first published in September 2002