I am a system engineer working for Tata Consultancy Services. In our mainframe we have 5 proccessor each of 108 MIPS. I want to know, can CICS as a single task run on more than one proccessor? Is DB2 subtasked (i.e. can it run on multiple proccessor) or does it run on single proccessor? What are the various ways to reduce load on CICS proccessor apart from division of CICS in two parts running on different proccessor?
Prior to CICS TS V1.3 all application code in a CICS region (address space) ran on a single OS/390 Task Control Block (TCB) and, therefore, on a single processor. Most CICS services also run on the same TCB although some CICS internal functions, such as file OPENs and some external security manager operations, run on separate TCBs and, therefore, it is possible for a single CICS address space to drive fractionally more than one processor. However most databases (eg DB2) and other resource managers (eg MQSeries) performing work on behalf of CICS applications do so on their own TCBs. Thus a CICS application using DB2 will drive multiple TCBs. It is certainly conceivable that a CICS - DB2 workload requires as many MIPS for the DB2 processing as for processing the application code and the CICS functions: in this case a single CICS region would drive up to two processors.
CICS TS V1.3 supports program written in Java. One way to run these programs is to run their bytecode under a JVM. Each running CICS transaction has its own JVM and each JVM runs on its own TCB. Hence it is possible to drive as many TCBs, and therefore engines, as there are concurrent Java transactions in the address space. Used this way a single CICS region could fully utilize all the engines of a zSeries multiprocessor (MP). Note that the performance of the JVM support in CICS TS V1.3 is such that running Java programs in this way is not recommended for heavy loads. This undermines the point I just made about MP utilization. BUT in CICS TS V2.2 it is recommended that you run your CICS Java programs under the new generation JVM supported by V2.2 and my point about MP utilization becomes valid.
In CICS TS V2.2 exploitation of multiple TCBs has been taken one stage further. In V2.2 it is possible to run CICS-DB2 applications under their own TCB. The programs may be written in COBOL. PL/I or C/C++ but, provided they are thread safe, they can be run under transactions that have their own dedicated TCB assigned to them. These programs will be running truly concurrently and allow the possibility of fully exploiting a multiprocessor.
However if you are not writing in Java and are not using DB2 to any great extent then the only way to exploit a multiprocessor is to spread the workload over a multiple region CICSplex. Most customers do this today, not specifically to exploit multiprocessors, but for availability and manageability reasons. In your case each processor is 108 MIPS. Making a wild guess that a typical CICS transaction may be around 1M instructions, a single processor could support approximately 100 transactions per second. I wonder how many end users that transaction rate supports. Possibly 5000, if we assume a 50 sec think-time between transactions. I am, of course, making many wild assumptions here but the point I want to make is that a single address space driving 108 MIPS is doing a lot of work on behalf of a lot of clients and maybe, just maybe, there are too many eggs in one basket. A CICS crash would affect all the users and the time to restart would be that much longer because of the number of clients and the amount of recovery to be done. I would certainly think it time to consider splitting this workload across multiple CICS regions just to reduce the number of end-users impacted if (when) a crash occurs and so that the restart time could be reduced so the effect of that impact is lessened.
Dig Deeper on IBM system z and mainframe systems
Related Q&A from Robert Crawford
For better mainframe capacity planning, how do I convert CPU hours to MIPS? And is there a way to calculate the relationship between MIPS and MSUs? Continue Reading
I have two years of experience in mainframe technology, currently working as a mainframe developer. I want to change to Java technology. Continue Reading
I want to replicate DB2 from the mainframe to an AIX box since it's cheaper and the copy can be used for testing. Is this possible? Continue Reading