Thread Safe

  • Uploaded by: minsarakanna
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Thread Safe as PDF for free.

More details

  • Words: 1,274
  • Pages: 27
CICS TS 2.2 and Threadsafe What’s in it for me?

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

1

Objectives • • • • • • •

History of Multithreading The Open Transaction Environment OTE and DB2 Controlling Threadsafe Determining if a program is Threadsafe Making programs Threadsafe Recommendations Copyright (c) 2003 R. E. Evans Consulting, LLC

2

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 Copyright (c) 2003 R. E. Evans Consulting, LLC

3

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

VSAM DB2 Program Loader etc. Copyright (c) 2003 R. E. Evans Consulting, LLC

4

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

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

5

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

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

6

OTE and DB2 Without Threadsafe QR TCB

Open TCB

Task Starts EXEC CICS EXEC SQL

DB2 Code executes

Application Code

DB2 Code completes

EXEC SQL

DB2 Code executes DB2 Code completes Copyright (c) 2003 R. E. Evans Consulting, LLC

7

OTE and DB2 With Threadsafe QR TCB

Open TCB

Task Starts EXEC CICS EXEC SQL

DB2 Code executes Application Code DB2 Code executes

Task Termination

Task completes

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

8

CICS and OTE Without Threadsafe

QR TCB

OTE

Active Task

L8 TCB L8 TCB DB2 SYSTEM CODE L8 TCB DB2 SYSTEM CODE L8 TCB DB2 SYSTEM CODE

DB2 SYSTEM CODE

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

9

CICS and OTE With Threadsafe

QR TCB

OTE

Active Task

L8 TCB L8 TCB DB2 SYSTEM CODE L8 TCB DB2 SYSTEM CODE L8 TCB DB2 SYSTEM CODE

DB2 SYSTEM CODE

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

10

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)

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

11

So, What’s the Problem Continued...

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 Copyright (c) 2003 R. E. Evans Consulting, LLC

12

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 Copyright (c) 2003 R. E. Evans Consulting, LLC

13

Threadsafe CICS Commands Not 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 DELETEQ TS ENTER TRACENUM HANDLE CONDITION LOAD PUSH HANDLE RETURN WRITEQ TS DISCARD DB2ENTRY INQUIRE DB2ENTRY INQUIRE TASK

ADDRESS DEQ FREEMAIN IGNORE CONDITION MONITOR READQ TS SUSPEND XCTL DISCARD DB2TRAN INQUIRE DB2TRAN SET DB2CONN

ASSIGN ENQ GETMAIN LINK POP HANDLE RELEASE WAIT EXTERNAL DISCARD DB2CON INQUIRE DB2CONN INQUIRE EXITPROGRAM SET DB2ENTRY

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

14

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. Copyright (c) 2003 R. E. Evans Consulting, LLC

15

Controlling 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

• At the program level: New parameter on Program Definition • CONCURRENCY=QUASIRENT Not Threadsafe • CONCURRENCY=THREADSAFE Copyright (c) 2003 R. E. Evans Consulting, LLC

16

Identifying Threadsafe Programs • No automated method of identification • CONCURRENCY parm is a promise by you, not an order to CICS • Must be Reentrant – COBOL programs compiled/linked with RENT – Asm programs linked with RENT, test with RENTPGM=PROTECT

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

17

Identifying Threadsafe Programs Continued...

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 • But, the only way to ensure that an application is Threadsafe is a complete review by an experienced programmer Copyright (c) 2003 R. E. Evans Consulting, LLC

18

Making Programs Threadsafe After identifying non-Threadsafe code you have two choices: 1) Alter the code to serialize the shared storage access 2) Do nothing

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

19

Making Programs Threadsafe continued...

If shared storage use is limited to few programs: • Leave non-threadsafe programs QUASIRENT • CICS will switch to QR on LINK or XCTL • Access to shared storage is automatically serialized Copyright (c) 2003 R. E. Evans Consulting, LLC

20

Making Programs Threadsafe continued...

Advantages: • No coding changes, so quick implementation Disadvantages: • Additional TCB switching overhead • Maintenance issues

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

21

Making Programs Threadsafe continued... Our CWA Issue Resolved by Marking Program QUASIRENT OTE TCB #1

OTE TCB #2

Switch to QR TCB

Switch to QR TCB

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

MOVE CWA-REC-COUNT TO KEY-UNIQUE-PORTION Copyright (c) 2003 R. E. Evans Consulting, LLC

22

Making Programs Threadsafe continued...

To serialize access to shared storage: • “Wrap” access in CICS ENQ/DEQ • For Assembler, use CS/CDS • Move data to a serialized facility: – Temporary Storage – DB2 table – …..

NOTE: Avoid OS ENQ Copyright (c) 2003 R. E. Evans Consulting, LLC

23

Making Programs Threadsafe continued... Our CWA Issue Resolved by Marking Program QUASIRENT OTE TCB #1

OTE TCB #2

EXEC CICS ENQ RESOURCE() MOVE CWA-REC-COUNT TO KEY-UNIQUE-PORTION ADD +1 TO CWA-REC-COUNT EXEC CICS DEQ RESOURCE() EXEC CICS WRITE IMPORTANT-FILE RIDFLD(KEY-COMPLETE)

EXEC CICS ENQ RESOURCE() . . . MOVE CWA-REC-COUNT TO KEY-UNIQUE-PORTION

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

24

Making Programs Threadsafe continued...

Regardless of which method, remember: All programs in an application, or all programs in a region Must be converted before activating Threadsafe Copyright (c) 2003 R. E. Evans Consulting, LLC

25

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

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

26

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!

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

27

Related Documents

Thread Safe
June 2020 1
Thread Safe In Cics
May 2020 5
Thread
November 2019 32
Thread
November 2019 31
Thread
June 2020 20
Thread
November 2019 25

More Documents from ""

Thread Safe
June 2020 1