OPA - Online Pool Analyzer OPA is a privileged task to display a snapshot map of the current contents of pool. This program is sufficiently valuable to all system managers or programmers who have pool space problems that it is well worth the risk of using. However, it is necessary while this program is scanning through pool to be on the system stack. It has been made somewhat more rugged than the 3.1 version submitted for San Diego DECUS, as it now catches its own odd address or memory protect traps, and reports them rather than causing a system crash. It is, however, conceivable that it might corrupt something in the EXEC, although rather less likely. The biggest problem from overuse is that some device drivers may require frequent access to system state (i.e. forking) in order not to lose interrupts. While this task is collecting data, the EXEC cannot handle fork requests. However it has been in use on the Process Control development computers in MSDGO at Caterpillar for quite some time, with no adverse effects. Usage: >OPA Additional qualifiers: UNIDENTIFIED_STRUCTURES, IDENTIFIED_STRUCTURES RESTRICTIONS 2 UNIDENTIFIED_STRUCTURES The program will identify about 95% of the data structures kept in pool, in its current version. Remaining known structures not identified are: AST control blocks and I/O packets associated w/full-duplex TT driver RECEIVE packets (certain tasks [notably TKTN, LOADER] have non-standard message sizes, and without significant checking any attempt to map those packets along with the standard ones would be difficult. FCB's for other than INDEXF.SYS (The window blocks for files which are open by tasks currently in memory have been done, but not the associated FCB's since many are buffered in the ACP anyway.) BUFFERS allocated by the half-duplex terminal driver for as-yet incomplete unsolicited input, or completed messages for MCR from either TT driver ERRLOG an 8-word block allocated by ERRLOG which is undocumented... DECNET data structures... TRANSIENT some rather transient data structures such as UMR allocation blocks OTHERS for which no documentation could be found... NON-RSX data structures from other layered products and software from third party vendors. For example SRF (System Reporting Facility from GEJAC Inc.) uses a lot of pool but its data structures will show up as question marks in the OPA listing. 2 OUTPUT The program output will appear on the invoking terminal, unless the task is installed and the LUN re-assigned to something like the lineprinter. If the task gets a command-line switch of /F, then it will list the free- segment list described below, otherwise it will skip directly to the map output. Output format: 1st line: number of fragments of pool 2nd line: total words of pool next n lines: addresses and sizes of all free segments in pool next line: total number of words free in pool Map format: In this display, each ASCII character represents a minimum allocatable piece of pool, i.e. 4 bytes. Each line is 64(10) characters, corresponding to 400(8) bytes of pool. Free area is shown by -------- Used but not identified is shown by ???????? 2 IDENTIFIED_STRUCTURES Structures identified by OPA: 1. represents an attachment discriptor block 2. [An] is a specifed-ast control block, where n is the ast type code 3. is a checkpoint file control block 5. is the task control block for task ...MCR 6. is a clock queue control block, where n is the type 7. is a login assignment 8. the volume control block for device DBn: 9. a file control block found for a file on DBn: 10. a window block for a file 11. an interrupt control block for device DV: 12. Structures for loadable driver w/loadable database. 13.
is a task header for task ...OPA. 14. is an I/O packet either in use or queued to device DVn:, does not include 'buffered I/O packets' used by FDX TT driver. 15. is a saved I/O size packet for QIO optimization. 16. ( FCSRES) is a PCB for a permanent partition, while (/...OPA) is a sub- partition control block, typically for a task in a system controlled partition. A subpartition control block for a driver is (/ ZB: ), while (+NT.DL ) is a dynamic or PLAS region. 17. MCR cmd line for task which has not done a GMCR$ yet 2 RESTRICTIONS Known bugs and restrictions: This version of OPA was written for RSX11M V3.1/V3.2. Under RSX11M V4.0 it still works and is still a very useful tool for evaluating pool problems but some of the data structures have become longer. For example the TCB is longer for V4.0 than for V3.2. OPA still identifies the start of TCB's correctly but not the length. So the OPA map will always have 3 question marks after each TCB. Also one question mark will appear after each VCB since volume control blocks also increased in size. There are probably other structures that increased in size but TCB's and VCB's are the most noticeable.