openvms locking concepts -...
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/1.jpg)
OpenVMSOpenVMSLocking ConceptsLocking Concepts
Norman LastovicaOracle Rdb Engineering
New England Development Center
Christian MoserOpenVMS Engineering
Finland Development Center
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/21.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/22.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/23.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b92300209d3f204338d6941/html5/thumbnails/24.jpg)
24
Anything Else...
Questions?
Comments?
•OpenVMS New Features and Release Notes
•OpenVMS Programming Concepts
•OpenVMS System Services Reference
•OpenVMS Internals and Data Structures