copyright (c) 2003 r. e. evans consulting, llc

44
Copyright (c) 2003 R. E. Evans Consulting, LLC 1 CICS TS 2.2 and Threadsafe Converting Applications to be Threadsafe Russ Evans evaru01@ ca.com Computer Associates SHARE102 Session 1036

Upload: tess98

Post on 25-May-2015

233 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

1

CICS TS 2.2 and Threadsafe

Converting Applications to be Threadsafe

Russ Evansevaru01@ ca.com

Computer AssociatesSHARE102

Session 1036

Page 2: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

2

Objectives

• History of Multithreading

• The Open Transaction Environment

• OTE and DB2

• Controlling Threadsafe

• Determining if a program is Threadsafe

• Making programs Threadsafe

• Recommendations

Page 3: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

3

History of Multithreading

• CICS as a Single TCB– Most efficient on a uni-processor– “Quasi-Reentrancy”– Issues:

• Runaway tasks

• OS Waits = Region Wait

• Many restricted OS and COBOL Commands

• Limited by speed of one processor

Page 4: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

4

History of Multithreading

• CICS Exploiting Multiple Processors– Multiple TCBs– Primary TCB is “QR”, Quasi-Reentrant– Additional TCBs for:

• VSAM

• DB2

• Program Loader

• etc.

Page 5: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

5

History of Multithreading

• CICS and DB2

– Separate TCB (‘thread’) for each DB2 Request– Task is switched to DB2 TCB for DB2 work,

DB2 system code runs on DB2 TCB– Significant workload shifted to DB2 TCBs, but

measurable overhead from TCB switching

Page 6: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

6

Open Transaction Environment

• Transaction runs under own TCB

• Introduced in TS 1.3 for Java

• DB2 Support added for TS 2.2

• Supports full OS function

• Allows true Multitasking in CICS

Page 7: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

7

OTE and DB2

QR TCB

Task Starts

EXEC CICS

EXEC SQL

Application Code

EXEC SQL

Open TCB

DB2 Code executes

DB2 Code completes

DB2 Code executes

DB2 Code completes

Without Threadsafe

Page 8: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

8

OTE and DB2

QR TCB

Task Starts

EXEC CICS

EXEC SQL

Task Termination

Open TCB

DB2 Code executes

Application Code

DB2 Code executes

Task completes

With Threadsafe

Page 9: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

9

L8 TCBDB2 SYSTEM CODE

L8 TCBDB2 SYSTEM CODE

L8 TCBDB2 SYSTEM CODE

CICS and OTEWithout Threadsafe

QR TCB

Active Task

OTE

L8 TCBDB2 SYSTEM CODE

Page 10: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

10

Active TaskActive TaskActive Task

L8 TCBDB2 SYSTEM CODE

L8 TCBDB2 SYSTEM CODE

L8 TCBDB2 SYSTEM CODE

CICS and OTEWith Threadsafe

QR TCB

Active Task

OTE

L8 TCBDB2 SYSTEM CODE

Active Task

Page 11: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

11

So, What’s the Problem

Consider a common use of CWA, holding a record counter used to make keys unique:

MOVE CWA-REC-COUNT TO KEY-UNIQUE-PORTION

ADD +1 TO CWA-REC-COUNT

EXEC CICS WRITE IMPORTANT-FILE

RIDFLD(KEY-COMPLETE)

Page 12: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

12

So, What’s the ProblemContinued...

Now, the same program running Threadsafe:

OTE TCB #1 OTE TCB #2

MOVE CWA-REC-COUNT TO KEY-UNIQUE-PORTION

ADD +1 TO CWA-REC-COUNT EXEC CICS WRITE IMPORTANT-FILE

RIDFLD(KEY-COMPLETE)

MOVE CWA-REC-COUNT TO KEY-UNIQUE-PORTION

ADD +1 TO CWA-REC-COUNT EXEC CICS WRITE IMPORTANT-FILE

RIDFLD(KEY-COMPLETE)

Error, DUPREC

And, CWA-REC-COUNT is incremented by 2

Page 13: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

13

Controlling Threadsafe• At the program level:

New parameter on Program Definition• CONCURRENCY=QUASIRENT

Not Threadsafe

• CONCURRENCY=THREADSAFE

• At the region level, new SIT parm:FORCEQR=YES/NO

• FORCEQR=YES All programs run non-Threadsafe

• FORCEQR=NO Programs follow CONCURRENCY parm on program definition

Page 14: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

14

Identifying Threadsafe Programs

• No automated method of identification

• IBM Tool can help

• Rules of thumb:– COBOL and PL/1 must be LE– All programs must be re-entrant– Aps with no affinities are more likely to be

threadsafe

Page 15: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

15

Identifying Threadsafe Programs

No automated method of identification

CONCURRENCY parm is a

promise by you, not an order to CICS

Page 16: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

16

Identifying Threadsafe ProgramsContinued...

There is a tool available to help start…..

• Utility DFHEISUP will scan for CICS commands commonly used in non-threadsafe applications

• Use command table DFHEIDTH

Page 17: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

17

Identifying Threadsafe ProgramsContinued...

There is a tool available to help start…..

• Identifies programs that issue:– ADDRESS CWA– EXTRACT EXIT– GETMAIN SHARED

• Consider adding:– LOAD PROGRAM () HOLD

Page 18: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

18

Identifying Threadsafe ProgramsContinued...

CICS LOAD MODULE SCANNER UTILITYSCAN PERFORMED ON Mon Oct 20 08:01:46 2003 USING TABLE DFHEIDTHSUMMARY LISTING OF CICS.NOT.TSAFE.LOADLIB===================================== Module Name Commands Found LanguageASMPGM1 1 Assembler COBPGM1 1 Cobol

LOAD LIBRARY STATISTICS =======================Total modules in library = 63 Total modules Scanned = 63Total CICS modules/tables not scanned = 0Total modules possibly containing requested commands = 2

Page 19: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

19

Identifying Threadsafe ProgramsContinued...

Programmer must:

• Review each program reported

• Determine if any non-threadsafe activity

• Review all calls/LINKs/XCTLs out of program to see if addressability to area is passed– If yes, review called programs to determine if any

non-threadsafe activity

Page 20: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

20

Making Programs Threadsafe

1) Alter the code to serialize the shared storage access

2) Do nothing

After identifying non-Threadsafe code you have two choices:

Page 21: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

21

Making Programs Threadsafecontinued...

• Leave non-threadsafe programs QUASIRENT

• CICS will switch to QR on LINK or XCTL (But…not for CALL!)

• Access to shared storage is automatically serialized

If shared storage use is limited to few programs:

Page 22: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

22

OTE TCB #1 OTE TCB #2

MOVE CWA-REC-COUNT TO KEY-UNIQUE-PORTION

ADD +1 TO CWA-REC-COUNT EXEC CICS WRITE IMPORTANT-FILE

RIDFLD(KEY-COMPLETE)

Wait for QR TCB to become available

Making Programs Threadsafecontinued...

Our CWA Issue Resolved by Marking Program QUASIRENT

Switch to QR TCB Switch to QR TCB

MOVE CWA-REC-COUNT TO KEY-UNIQUE-PORTION

Page 23: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

23

Making Programs Threadsafecontinued...

Advantages:• No coding changes, so quick implementation

Disadvantages:• Additional TCB switching overhead • Maintenance issues• All programs that access these areas must also

remain QUASIRENT

Page 24: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

24

Making Programs Threadsafecontinued...

What is this data used for?

– Is this data still used/required?– Does it matter if the data is inaccurate?– Must I lock the data for both read and update, or

just for update?

Page 25: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

25

Making Programs Threadsafecontinued...

• “Wrap” access in CICS ENQ/DEQ

• For Assembler, use CS/CDS

• Move data to a serialized facility:– CICS Maintained Data Table– DB2 table– Coupling Facility

NOTE: Avoid OS ENQ

To serialize access to shared storage:

Page 26: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

26

Making Programs Threadsafecontinued...

The Compare and Swap works on a fullword value. Since the storage area is only locked during execution of the CS, it can be changed while the program is preparing its update. To handle this situation, the CS takes three operands:

What the value was when I first accessed it

What I want the new value to become

The storage area in question

When the CS executes, it first locks the storage area. Then, it compares the actual value in the storage area to the value you say it should be. If these values match, then the data in the storage area is replaced with the value you asked for, and the condition code is zero.

If the values don't match, it means that some other task has updated the area after you retrieved its value. The data in the storage area is not replaced, and the condition code is set to non-zero.

In this example, we are attempting to increment a counter by one. If the CS fails, we simply acquire the new current value and try again.

The Assembler Compare & Swap Command

Page 27: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

27

Making Programs Threadsafecontinued...

GETCOUNT DS 0H

L R15,CWA_REC_COUNT pick up the rec number

LA R0,1(,R15) increment the use count

CS R15,R0,CWA_REC_COUNT save the new count

BNE GETCOUNT data altered, try again

ST R15,KEY_UNIQUE_PORTION build key

The Assembler Compare & Swap Command

Page 28: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

28

OTE TCB #1 OTE TCB #2

EXEC CICS ENQ RESOURCE()MOVE CWA-REC-COUNT TO

KEY-UNIQUE-PORTIONADD +1 TO CWA-REC-COUNTEXEC CICS DEQ RESOURCE() EXEC CICS WRITE IMPORTANT-FILE

RIDFLD(KEY-COMPLETE)

Making Programs Threadsafecontinued...

Our CWA Issue Resolved by Using ENQ/DEQ

EXEC CICS ENQ RESOURCE()...

MOVE CWA-REC-COUNT TO KEY-UNIQUE-PORTION

Page 29: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

29

Making Programs Threadsafecontinued...

All programs in an application,

or

all programs in a region

Should be converted before activating Threadsafe

Regardless of which method, remember:

Page 30: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

30

Non-Threadsafe CICS Commands

• Many commands not Threadsafe

• Use of non-Threadsafe commands is fully supported by CICS

• CICS detects non-threadsafe command and switches task to QR TCB

• Task remains on QR TCB until next SQL

• Worst case: no CPU improvement if every SQL stmt followed by non-threadsafe cmd

Page 31: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

31

Threadsafe CICS CommandsNot all Exec CICS commands are threadsafe. Here is a list of threadsafe commands supplied by IBM at the last Share conference. All commands not listed are not threadsafe.

ABEND ADDRESS ASSIGN

DELETEQ TS DEQ ENQ

ENTER TRACENUM FREEMAIN GETMAIN

HANDLE CONDITION IGNORE CONDITION LINK

LOAD MONITOR POP HANDLE

PUSH HANDLE READQ TS RELEASE

RETURN SUSPEND WAIT EXTERNAL

WRITEQ TS XCTL DISCARD DB2CON

DISCARD DB2ENTRY DISCARD DB2TRAN INQUIRE DB2CONN

INQUIRE DB2ENTRY INQUIRE DB2TRAN INQUIRE EXITPROGRAM

INQUIRE TASK SET DB2CONN SET DB2ENTRY

Page 32: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

32

Non-Threadsafe CICS Exits

• Area of concern

• Task switched to QR for duration of exit, then back to Open TCB

• Infrequently referenced exits not a problem

• Frequently referenced exits (eg., XEIIN) are a major performance problem

• Worst case: significant (20%++?) increase in CPU utilization.

Page 33: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

33

Maximizing CPU Savings

QR TCB

Task Starts

EXEC CICS

EXEC SQL

Task Termination

Open TCB

DB2 Code executes

Application Code

DB2 Code executes

Task completes

CPU reduction with DB2 and Threadsafe is achieved by reducing the number of TCB switches

Page 34: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

34

Maximizing CPU Savings

QR TCB

Task Starts

EXEC SQL

EXEC SQL

Task Termination

Open TCB

DB2 Code executes

Application Code

EXEC CICS ASKTIME

DB2 Code executes

Task completes

Any additional TCB switches supporting non-Threadsafe activity will reduce the potential savings

Page 35: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

35

Maximizing CPU SavingsTools to verify you are maximizing your

savings:

• SMF Statistics

• CICS Auxiliary Trace

Page 36: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

36

Maximizing CPU SavingsSMF Statistics

Look at ratio of Mode Switches : SQL Calls

• High ratio indicates many non-threadsafe commands

• Low ratio shows maximizing savings

• Ratio > 1 indicates non-threadsafe exits

Page 37: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

37

Maximizing CPU SavingsIdentifying the non-Threadsafe Commands

Using Auxtrace

DSAT CHANGE_MODE MODENAME(QR)

Following a CICS command

Page 38: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

38

Maximizing CPU SavingsOnce the command has been identified…..

• Remove it Replace ASKTIME with EIBTIME?

• Replace itReplace VSAM workfile with CICS TempStor?

• Relocate itMove the command outside of the SQL loop?

Page 39: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

39

Threadsafe Without DB2

You can exploit the Open environment without DB2

Roll your own TRUE:

• Include OPENAPI on the ENABLE command

• The TRUE program must be Threadsafe

• See the CICS Customization Guide section on Task Related User Exits

Page 40: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

40

Threadsafe Without DB2

Functions like DB2 call:

• When task calls OPENAPI true, spun to L8 TCB

• If user program THREADSAFE, task remains on L8 until forced off

• No supported method to tell if task is on L8 or QR

• Review restrictions defined in Customization Guide!

Page 41: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

41

Futures

• Should see more OTE in future releases

• OTE Changes Everything– Loosens OS command restrictions

– Better support for “batch” transactions• task owns the TCB, not the region

– Provides CPU constraint relief, with or without DB2

Page 42: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

42

Futures

• IBM committed to making more commands threadsafe

• IBM Announces additional threadsafe commands for CICS 2.3 (from ALET 203-296)

• New threadsafe commands: ASKTIME, FORMATTIME, CHANGE TASK, DOCUMENT CREATE, DOCUMENT INSERT, DOCUMENT SET, DOCUMENT RETRIEVE

Page 43: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

43

Recommendations

• Consider Threadsafe implications now.

• Heavy DB2 users receive greatest savings.

• Convert by application, not by program

• Don’t forget purchased packages

• Watch out for exits!

Page 44: Copyright (c) 2003 R. E. Evans Consulting, LLC

Copyright (c) 2003 R. E. Evans Consulting, LLC

44

Recommendations

• Review IBM recommended maintenance:

PQ75405, PQ67351, PQ72112, PQ67559, PQ67863, PQ67892, PQ68099, PQ69553

• For additional information, see:– Jim Grauel’s Share presentation “What does it

mean to be threadsafe…”– There are a number of whitepapers and

presentations on my web site, www.reevans.com