openvms locking concepts -...

24
OpenVMS OpenVMS Locking Concepts Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development Center norman . lastovica @oracle.com Christian Moser OpenVMS Engineering Finland Development Center cmos @hp.com Revised: June 20, 2005

Upload: vuongque

Post on 07-Sep-2018

253 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

OpenVMSOpenVMSLocking ConceptsLocking Concepts

Norman LastovicaOracle Rdb Engineering

New England Development Center

[email protected]

Christian MoserOpenVMS Engineering

Finland Development Center

[email protected]

Revised: June 20, 2005

Page 2: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

2

Agenda

• Synchronization techniques

• VMS Distributed Lock Manager

• Rdb’s uses of locking

• Tools and tricks

Page 3: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

3

SynchronizationTechniques

• Atomic Updates– Compiler builtins

– LDx_L/STx_C (Alpha)

– fetchadd, xchg, cmpxchg (IA64)

• Spinlocks– Static (SCHED, IOLOCK8, MMG)

– Dynamic (PCB, Mailbox, TCPIP)

• Mutexes & Semaphores– Posix Threads

• Locks & Resources– Distributed Lock Manager

– Used by VMS, XQP, RMS, Rdb, etc.

Page 4: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

4

Distributed Lock Manager

• Cooperating processes use lock manager tosynchronize access to shared resources

• Locks are used to control access to resources

• Resource may be just about anything– Device, File, Record, Bucket, Database, Page

• Works across all nodes in a cluster environment

Page 5: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

5

Distributed Lock Manager(cont’d)

• Lock modes: NL, CR, CW, PR, PW, EX

• Locks ”requested” by thread/process and ”granted”by lock manager– Thread/process put in wait state until lock granted

• Many locks may be taken out on single resource

Page 6: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

6

Compatibility of Lock Modes

Mode of Currently Granted Lock Requested

Mode NL CR CW PR PW EX

NL Yes Yes Yes Yes Yes Yes

CR Yes Yes Yes Yes Yes No

CW Yes Yes Yes No No No

PR Yes Yes No Yes No No

PW Yes Yes No No No No

EX Yes No No No No No

Page 7: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

7

Distributed Lock Manager(cont’d)

• Lock conversion– ”UP” to more restrictive mode– ”DONE” to less restrictive mode– Convert to NL mode & keep lock is faster than

enqueue/dequeue new locks

• Lock queues– Granted, Waiting & Conversion

• Synchronous lock request $ENQW or lock completionAST with $ENQ

Page 8: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

8

Deadlocks

• Occur when any group of locks are waiting for each other in acircular fashion– There can be 2 or more locks involved in deadlock

• VMS checks waiting locks once per second– DEADLOCK_WAIT to disable or control frequency of searches

• Deadlock search is complex & quite costly if nothing found– Use LCK$M_NODLCKWT & LCK$M_NODLCKBLK to avoid

searches on ”doorbell” locks

• VMS chooses victim to break deadlock– Returns SS$_DEADLOCK– Process needs to demote all locks & restart

Page 9: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

9

3-Member Deadlock

Waiting forresource

that B has

Waiting forresource

that C has

Waiting for resource

that A has

A B

C

Page 10: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

10

Lock Blocking AST

• When lock is requested, blocking AST routine may bespecified

• When incompatible lock is requested by anotherprocess, blocking AST routine is called– Notifies program that it is blocking some other lock request– Also called ‘BLAST’ (BLockingAST)

• Cheaper to hold on to lock with BLKAST than toconvert up & down at high rate– RMS bucket and record lock– Rdb Page lock

• Used also for event notification

Page 11: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

11

Lock Value Block

• Optional information stored with resource– 16 or 64 bytes

– Content written from LKSB into RSB when convert downor dequeue from EX or PW

– Content read from RSB into LKSB when lock granted orconvert to equal or higher mode

• Used to pass information between processes– Resonably fast way to pass small amount of data between

multiple nodes in a cluster

– Often used for cache coherency

• Volatile: content becomes invalid if node/process fails

Page 12: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

12

Lock (Re)Mastering

• Resources mastered on one node at a time– Entire lock tree (lock & sublocks) mastered on one node

• Master is responsible to coordinate access to locks

• New resource mastered on local node– Moves to nodes with non-zero LOCKDIRWT if more than

one node has locks on resource

• Lock tree remastered if node removed from cluster

• Dynamic remastering based on activity

• Local lock operation is fast

• Remote lock operation is slow (orders of magnitude)

Page 13: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

13

Distributed LockingResponse Times

678

279

4

350

57

882

0

200

400

600

800

1000

Mic

rose

cond

s (M

easu

red

)

GS140/525 Galaxy GS320/1000Galaxy

GS140/700 CI VAX 6650 CI

Local

Remote

Page 14: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

14

Distributed Locking CostsGS140 - CI Interconnect (estimated)

0

50

100

150

200

250

300

350

Ela

pse

d T

ime

(mic

rose

con

ds)

Local ENQ/DEQ

Local Convert

RemoteENQ/DEQ

Remote Convert

Network

Remote CPU

Local CPU

Page 15: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

15

Dedicated CPU Lock Manager

• “Dedicate” a CPU for all local lock managementoperations– Spins waiting for queued work requests

– Very low latency

– Avoids contention for lock management spin lock

– Keep CPU caches “hot”

– Virtually eliminates MPSYNC time for some applications

– Remote lock operations do not use

– Avoid device I/O & interrupts on this CPU

Page 16: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

16

Locking Parameters

• ENQLM process quota– 32K in SYSUAF means unlimited

• LOCKIDTBL initial size of lock id table– Can grow on the fly

• RESHASHTBL size of resource hash table– If too small can result in long hash chain walks

• DEADLOCK_WAIT– Control deadlock searches, overhead if too small

• LOCKDIRWT– Controls portion of lock directory for this node

• PE1 controls dynamic remastering

• LCKMGR_MODE enables dedicated lckmgr

• LCKMGR_CPU controls CPU affinity of dedicated lckmgr

Page 17: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

17

Rdb Lock Tree

Page 9987 Page 855

Physical Area 12

RecordPage 733 : Line 8

RecordPage 733 : Line 3

RecordPage 475 : Line -4

Logical Area 14 Page 733 Page 476

Physical Area 73

DatabaseDevice ID + File ID

Page 18: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

18

Rdb Lock Tools

• $ RMU /SHOW STATISTICS• $ RMU /SHOW LOCKS

– [/MODE=BLOCKING]– [/MODE=WAITING]– [/MODE=CULPRIT]

Page 19: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

19

Top 8 InterestingRdb Resource Types

DBKEY (page/line)L

Client (subtypes: DDL, PSN, DDLctr)U

SEQBLKRPageP

Database key scopeKTSNBLKG

Snap Area CursorCLogical AreaB

NameType

Page 20: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

20

Example Rdb ClientResource Name

• Resource: client '....7...C1 '20203143000000370000000400000055– Client Lock

– Lock TypeRelation/View = 00000004

Modules = 00000015

Routines = 00000016

– Object number

– Additional information (usually 4 byte start of ASCII name)

• Enhanced formatting in Rdb 7.2

Page 21: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

21

Example Uses ofLock Value Block

Resource Name: TSN block 2Lock Value Block: 00002171 00000000 00000FE2 03000001

– 00002171 00000000 - oldest TSN in block (8561)– 00000FE2 - TSNBLK sequence (4066)– 0001 - There is a WIP TSN in this block– 00 - Filler byte – not used– 03 - VALBLK_VALID + SYNCH

Resource Name: channel 4Lock Value Block: 1A19EBC5 00290000 112407A3 03010000

– 1A19EBC50000 - Device ‘type’ in RAD50 ($1$DGA)– 0029 - Unit number (41)– 112407A30000 - File ID (1955,4388,0)– 03 - VALBLK_VALID + SYNCH

Page 22: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

22

Tools & Utilities

• $ MONITOR LOCK• $ MONITOR DLOCK

• SDA> SHOW PROC /LOCK [/BRIEF]• SDA> SHOW LOCK [/SUMMARY]• SDA> SHOW RESOURCE [/LOCK=n]• SDA> SHOW RESOURCE [/CONTENTION]• Examples:

– sda_lock_summary.txt– rdb_active.txt

Page 23: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

23

More Tools & Utilities

• SDA> LCK STATISTIC• SDA> LCK SHOW ACTIVE• SDA> LCK SHOW CONTENTION /INTER=0.1• SDA> LCK SHOW LCKMGR /INT=10 /REP=5

• Examples– lck_active.txt

– lck_statistic.txt

– lck_lckmgr.txt

– lck_process.txt

Page 24: OpenVMS Locking Concepts - Oracledownload.oracle.com/otndocs/products/rdb/pdf/rdbtf05_locking.pdf · OpenVMS Locking Concepts Norman Lastovica Oracle Rdb Engineering New England Development

24

Anything Else...

Questions?

Comments?

•OpenVMS New Features and Release Notes

•OpenVMS Programming Concepts

•OpenVMS System Services Reference

•OpenVMS Internals and Data Structures