This is TBLTest, Copyright (c) Allegro Consultants, Inc. TBLTEST is a multi-purpose toolbox designed to look into the internals of many MPE/iX tables. One of its primary goals is to help the user determine which tables might be triggering performance problems or potential near-term system failures due to the exhaustion of some system resources. TBLTEST isn't the best named, or the best documented, utility. It grew over time and is generally intended to be used by a skille user familiar with the internals of MPE/iX. Allegro continues to enhance TBLTEST, both in terms of functionality / features, and documentation. TBLTEST has four primary areas of interest. These, and and some sample commands for each, are: 1. memory a. system tables INFO FILLING ... what tables are filling up? VSODS ENTRIES 100 ... any files misusing the VS Extent B-Tree Table? b. SR6/SR7 memory allocation SR6SR7 ... how is SR6/SR7 space doing? c. files & associated Space IDs FINDSID LOOKFILE 2. I/O a. disk I/Os MIBS PROBLEMS ... any hung disk I/Os? HLIO 3. locking a. semaphores / control-blocks LISTSEM SEM 4. disk drive alloction a. disk allocation information SHOW SSM The most used commands are probably: INFO FILLING ... what tables are filling up? SR6SR7 ... how is SR6/SR7 space doing? MIBS PROBLEMS ... any hung disk I/Os? VSODS ENTRIES 100 ... any files misusing the VS Extent B-Tree Table? SHOW SSM ... show disk allocation summary information In many cases, "boolean" options may have an optional "NO" prefix to indicate you want the opposite effect. The commands are: BFREE The BFREE command lists the number of Extent B-Tree entries that would be saved if Allegro's BFree product was installed and running in "save" mode. DUMPMVT [options] options ::= < noDebugQ | noHASH | noLSIDS | VOLUME_SET | [ noVSET | noVOLSET ] | noVerbose > Displays information about the Mounted Volume Table. Useful for determining the Space ID for a Label Table for a paritcular disk drive. ECHO text Echos text to terminal EXIT or // Terminates this program immediately. FCLOSE [fid] [disp] [seccode] If fid is omitted, closes the currently opened file (see FOPEN), otherwise closes the specified file. Example: to close/purge the currently opened file: FCLOSE , 4 The FCLOSE command is for internal R&D use. FINDFILElabel file_label_address [SLOW | FAST] [UFID] Tries to determine the filename for the specified file label. FAST will give up quickly for HFS files, SLOW will search (via hpdir_get_path_from_ufid) to get the filename. Default: SLOW If you specify the UFID option, TBLTEST wil display the UFID it generates from the file label address. FINDSID # [options] options ::= [...] FINDSID searches for all files/objects associated with the specified Space ID (SID). FLUSH ALL [DOTs | Verbose] Flushes all closed files from memory. You must use the ALL option, otherwise the command is rejected ... this is required to avoid accidentally flushing files from memory. FLUSHFILE filename [FOPTIONS #] [AOPTIONS #] Opens the specified file, closes it, and attempts to flush it from the LRU list. FOPEN filename [foptions] [options] FOPENs the specified file. File stays open until a subsequent FCLOSE is done. Default: foptions=3, aoptions=0 The FOPEN command is for internal R&D use. GETKSO [options] [options] options ::= < ALL | BAD | BADOnly | GOOD | NIL > HELP or ? [prefix] Displays this help information. If you provide a prefix, only those sections with keywords that start with that prefix will be displayed. HLIO [ALL | [no]DISKonly | [no]IGNorefree | LDEV # Reports recent High Level I/Os. INFO [ | ] []* [dest] which ::= kso ::= kso# | kso_name options ::= | DELTAs | SHOWNIL | ACTive | ADDRess | TOTals | WATCH | ZERO> dest ::= TO filename | APPENDTO filename > filename | >> filename INFO FILLING ... show all tables > 50% full INFO FILLING # ... show all tables > #% full Note: tables with a maximum of one entry, and the PM_PCB table never qualify as "interesting" for FILLING. The TABLESIZE command reports a subset of what INFO reports. The WATCH option causes INFO to loop, reporting changes over time. In batch, it reports once every 5 seconds until either maxloops is hit or you abort the job. In a session, it reports, and then prompts to allow you to terminate the loop (by entering a single slash (/)). JSMAINS [options] options ::= < noALL | noJobs | noSessions | noTRace | noVerbose | noWatch > The JSMAINS command lists JSMAIN.PUB.SYS processes that are the children of JOB.PUB.SYS and/or SESSION.PUB.SYS and that have no children themselves. These are the JSMAINS that are either inactive (no job/session associated with them) or are associated with a job/session that is in the process of logging on. The "TRACE" option says "when found, do a stack trace". The "WATCH" option says "search, pause 5 seconds, repeat" (will loop until control-Y is hit). KSOS [ | ] [noDEDUCE] [noCLASS] which ::= kso ::= kso# | kso_name Lists known KSOs (Known System Objects). LISTSEM Lists "known" semaphores (may not be many, this is a new & partially implemented feature). LOAD filename [noFILENAMEs] [noPEEK] [noQuiet] [noVERbose] Loads a "save file" (see the SAVE command) for analysis. Note: some features of TBLTEST are unavailable after a LOAD command is done. LOOKFILE filename Reports information about a file, including: file data virtual address file label virtual address GUFD address UFID XM logset # (0 or 'none' means: not attached to XM) MIBS [*] [*] [] [] } listing ::= ALL | NONE filter ::= FAULTS | IGNOREC | FREE | INUSE | LDEV # | NEW | OLD | PROBLEMs | REGIONS # | UNKnown options ::= DEBUG1 | DUMPSGL | MAXPASses # | [no]IOSUMmary | SGL | SHOWUSE | PINs | TICKs | TIMEs | Verbose | WATCH #seconds output := filename [DElete | KEEP] Reports recent Memory Manager disk I/Os. The "NEW" filter tells MIBS to only list requests that are less than 10 seconds old. The "OLD" filter tells MIBS to only list requests that are more than 10 seconds old. The "PROBLEMs" filter tells MIBS to only list requests that are (a) inuse and (b) more than 10 seconds old. Such requests may be for disk drives that are not responding. Normally, when a listing is requested, the listing includes some detailed summaries of I/O information. This can be suppressed by specifying NOIOSUMMARY. Note: some I/O requests have no time stamps associated with them. Such requests are not considered "old" or "new". Example: List "problem" I/O requests: MIBS PROBLEMS List all recently completed I/Os: MIBS LIST FREE List every I/O request: MIBS LIST MIBTIMER [Look | DISable | ENable] Some disk I/Os have their start time recorded in an MPE/iX data structure calle the MIB (Memory Information Block). TBLTEST (and the user) can look at such MIBs and deduce how long ago the I/O request was issued. Unfortunately, not all disk I/O requests have that field in the MIB setup ... many, sometimes most, have a 0 in that field. The MIBTIMER ENABLE command installs a temporary MPE/iX patch that makes more of the memory manager disk I/Os have timestamps, which allows for better monitoring of potentially stale I/Os. MIBTIMER DISABLE removes the temporary patch (if it was installed). MIBTIMER LOOK, or just MIBTIMER, reports whether or not the patch is installed. MM [DUMP] [DUMPALL | Outstanding] [Short] [Quiet] [Info] [mibstate] [mibqual] [mibchain] mibstate ::= mibqual ::= mibchain ::= [Masters [CHAINed] ] Optionally displays information about the Memory Manager (INFO), and (optionally) lists all or some MIBs (Memory Information Blocks, used for memory manager disk I/Os). DUMPALL ... list all MIBs. INFO ... display Memory Manager global information. OUTSTANDING ... list the MIBs for disk I/Os that are still outstanding (this is a list maintained by the memory manager). QUIET ... suppresses the MIB listing, and reports a summary of how many MIBs would have been listed. SHORT ... list only one line per selected MIB. ANYPIN ... select MIBs associated with processes. NOPIN ... select MIBs not associated with processes. MASTERS ... only show the master MIB of a chain of MIBs. CHAINED ... for each master MIB, show the chain of MIBs. (If neither MASTERS nor CHAINED is specified, MIBs are listed as they are found.) OBJCL <# | ALL | prefix | @prefix>* [PARSE name] Given a number, reports the name of that Object Class number. Given "ALL", lists all Object Class names. Given a prefix (e.g., OBJCL JOB), lists all Object Class names that start with that prefix. (Wildcards not supported.) Given a @prefix (e.g., OBJCL @QUEUE), lists all Object Class names that have the text in their name. (Wildcards not supported.) PEEKload filename Looks at a potential "LOAD" file and reports information about the file. PIN # | ALL | MAXpin Attempts to report the program name associated with the specified PIN or ALL PINs. ("PIN" = Process Information Number.) PIN MAXPIN reports the highest in-use PIN, and the highest possible PIN. PRESSURE Reports whether or not the memory manager has decided that the system is under "memory pressure" or not. Also sets a CI variable callled MEMORY_PRESSURE to true or false. SAVE filename [PURGE | KEEP] [options]* options ::= ALL | noFILENAMEs | noIO | noMM | NOTHING | noPM | noQuiet | noSYSGlobals | VERbose | noVSM The SAVE command saves a copy of the tables TBLTEST looks at into a disk file named . This table can be loaded later via the LOAD command, and examined as if you were on the original computer. The "save file" ranges from 5 MB to 120 MB, depending upon the size of the tables on your system. SEMaphore [options] [dest] kind ::= semaphore_address | PIN <# | ALL> | PORTarea address | SHARED | ANALYZE options ::= * dest ::= TO filename | APPENDTO filename | > filename | >> filename noDUMP noTIMEs | The SEMAPHORE ANALYZE command searches for deadlocks involving semaphores (control blocks). The SEMAPHORE PIN ALL command lists processes holding semaphores. default: SEM PINS ALL WAITING (See also: LISTSEMS) SET [ ]* reSET [ ]* options ::= < 132 | 256 | 80 | noDEBUG1 | noDEBUG2 | noDEBUG3 | noDEBUG_FIXUP | noDEBUG_INPUT | noDEBUG_OUTPUT | noDEBUG_PERCENT | noDEBUG_REJECT | noDELTas | noFNAME_DEBUG | noHEX | noINNOCENT | noLFT | MAXERRors # | MAXSHOW # | noMYWALK | noPAGING | noPINNAMEs | noRESET | noSEMSPEC | noSET | noSHOWMISMATCH | noSLOW_NAME | noTOTals | noVerbose | WIDTH # | noWIZard > Allows you to SET (or RESET) various options: HEX ... display KSOs as hex values LFT ... consider the Loader File Table to be a useful table (default NOLFT) MAXERRORS # ... specify the maximum number of erors that the VSOD command may encounter before it terminates. (default: 10) A value of 0 means "no limit". PAGING ... for paginated output PINNAMES ... enable/suppress looking up names for PINs. WIDTH ... terminal width 80 ... WIDTH 80 *and* the HP escape sequence to set the terminal to 80 columns is sent. 132 ... WIDTH 132 *and* the HP escape sequence to set the terminal to 132 columns is sent. The number of lines per output page defaults to 24, and can be overridden by "SETJCW LINES #" prior to running TBLTest. SHOW [ALL | FS | LOADed | LRU | SM | SSM] [FILENAME xxx] [DUMP] [NODES #] [ENTRIES #] [ANY | CLOSED | OPEN] [Verbose] options ::= < noALL | ANY | CLOSed | noDUMP | ENTRIES | noFILE_SYStemglobals | FILEname | noFSg | noLOADed | noLRU | NODES | NODES | OPENed | [ SHOWLRU | LRU ] | SHOWLoaded | noSM | noSSM | noVerbose > The SHOW command shows some global information about the specified subsystems: the file system (FS), the list of mapped in files (LRU), Storage Management (SM), and/or Secondary Storage Management (SSM). ("ALL" means all four.) The DUMP option applies to the SM option (and implies SM) ... it will list all gufds on the LRU list. The FILENAME option applies to the LRU option (below) (and implies LRU). It will list all files on the LRU list that match the initial portion of xxx. E.g., FILENAME /SIELER/ will list all files on the LRU list that are in the SIELER account. FILENAME /SIELER will list all files in the SIELER account and the SIELER2 and SIELERZ accounts. FILENAME must be in HFS syntax with a leading slash, and is case sensitive. No wildcards are supported. The LRU option defaults to listing all files that are on the "LRU list". This list is sometimes called the list of recently closed files, but it actually has both open files and recently closed (but still mapped in) files. You can tell TBLTEST to list all the files on the list (default), or just the CLOSED files or just the OPEN files (ALL/CLOSED/OPEN). The NODES option implies LRU, but suppresses listing files that have fewer Extent B-Tree nodes in use. The ENTRIES option implies LRU, but suppresses listing files that have fewer Extent B-Tree entries in use. SHOWLOADed Shows the objects "loaded" by the LOAD command. (This command is of little use to the user.) SIDPINS For all existing processes, determines the SID (Space ID) for the process private data (e.g., the stack for each process). The sorts the list and reports it in SID order. SR6 [restrict] [options] [dest] SR7 [restrict] [options] [dest] SR6SR7 [restrict] [options] [dest] VSODs [restrict] [options] [dest] restrict ::= * vloc ::= options ::= * dest ::= TO filename | APPENDTO filename "ALL" = most options except DUMP@ options. This is quite verbose. "MOST" = BTREEPERCENT FILENAME FREESPACE LIST SHOWVSOD VERBOSE FLAB (#1) ENTRYCOUNT (#2) "DUMPALL" = DUMPMAP DUMPENTRIES DUMPSUBENTRIES DUMPVIRGIN "BTREES" = ENTRYCOUNT SUBENTRYCOUNT footnote #1: if on MPE/iX 6.0 or later footnote #2: if terminal width is 132 or greater The SR6, SR7, SR6SR7, and VSODS commands scan the list of all allocated objects, optionally listing information about selected objects, and reporting a summary. (VSOD means Virtual Space Object Descriptor; one is associated with every range of virtual address allocated on the system. Even objects in SR6 or SR7 space have VSODs. allows you to limit the VSODs that are displayed. (SR6 implies a restriction of "only VSODs that are objects in SR6", similarly SR6SR7 implies a restriction of "only VSODs that are objects in SR6 or SR7". The basic VSODs command has no SR6/SR7 restriction.) allow you to specify what happens for each VSOD that satisfies the restrictions. SR6 and SR7 are one-gigabyte chunks of virtual memory where many system data structures are allocated, as well as short mapped files. The system will fail if you run out of SR6/SR7 space. The "SR6SR7 ..." command shows both SR6 and SR7 information. The "SR6 ..." command shows only SR6 information. The "SR7 ..." command shows only SR7 information. The "VSODS ..." command shows information about all objects, whether or not they are in SR6, SR7, or a space by themselves. All forms of the command report a summary of SR6, SR7, and "other" VSOD, space, and SID usage. The keywords are: ANYPID ... only those objects with a Protection ID. Example: VSODS ANYPID BTREEPERCENT # ... only those objects whose Extent B-Tree usage is # or less percent optimal. (Also implies BTREEPERCENT option (below).) An object of 32,767 pages using one B-Tree entry is 100% optimal. Research is ongoing to determine how to open files in a manner that causes them to use an optimimum number of entries. Example: VSODS BTREEPERCENT 40 ENTRIES # ... only objects with at least # Extent B-Tree entries (see "NODES" footnote). Example: VSODS ENTRIES 3 FILESOnly ... only objects associated with files (no stacks, heaps, system tables, etc.) Example: VSODS FILESONLY LSID #/# LSID # ... only objects that are files *and* where the Label Table entry for the file has the specified Space ID(s). For example, if the Label Tabel for ldev 29 is SID $123, then: VSODS LSID $123 will list just the VSODs associated with files whose label is on ldev 29. Note: LSID may be a single value or a range, and multiple LSID clauses may be specified (to allow searching for many Label Tables). LVSET xxx only objects that are files *and* where the Label Table entry for the file is in the specified Volume Set. (May be followed by LSID options, but not more LVSEToptions.) OBJCL # ... only objects whose object classes match the specified object class number. Example: VSODS OBJCL 123 OBJCL = name ... only objects whose object classes match the specified objectg class name are listed. Example: VSODS OBJCL = PIB Note: if "name" ends in a "@", it is treated as a form of wildcard ("PIB@") would match objectclass PIB and object class PIBX) PIN # ... only objects associated with the specified PIN. Note: currently, only sees process private data (not most files) RESIDENT ... only objects that are memory resident. Example: VSODS RESIDENT SID #/# SID # ... Only objects whose virtual address has the specified SID(s) (Space ID number). Example: VSODS SID $a Note: SID may be a single value or a range, and multiple SID clauses may be specified (to allow searching for many Space IDs). SR5 ... only object that are part of a process' stack. (Nearly identical to VIRTLOC SR5, but includes three objects created during system bootup that aren't marked as Virtual Location SR5.) SUBENTRIES # ... only objects with at least # Extent B-Tree subentries (see "NODES" footnote). Example: VSODS SUBENTRIES 23 VIRTLOC xxx ... only object with the specified kind of virtual location (ANYwhere, own_SPACE, SR5, SR5, SR6, SR6_SR7, SR7). Note: specifying VIRTLOC of SR6_SR7 is *not* the same as using the SR6SR7 command! Example: VSODS VIRTLOC SR7 VSOD addr list only the specified Virtual Space Object Descriptor. (Valid only for the VSOD command.) Example: VSODS VSOD $c8000000 The keywords are: ALL ... turns on almost all options (verbose!). (ALL turns on BTREES only if the terminal width is 132 or more) Example: VSODS ALL BFREE ... analyze the Extent B-Tree and report how many entries could be saved by the Allegro BFree product, and list the entries. BFREE1 ... analyze the Extent B-Tree and report how many entries could be saved by the BFREE.1 mode of the Allegro BFree product, and list the entries. BFREE2 ... analyze the Extent B-Tree and report how many entries could be saved by the BFREE.2 mode of the Allegro BFree product, and list the entries. BTREES ... implies LIST, and adds information about the number of Extent B-Tree entries and subentries used by each object. On terminals with COLUMNS >= 132, the data is two extra coluns, otherwise the data is displayed as a second line. See also: DUMPENTRIES and DUMPSUBENTRIES. Example: VSODS BTREES BTREEPERCENT (without a number following it) ... show how well used the Extent B-Tree is for an object (100% = perfect). Example: VSODS BTREEPERCENT DUMPENTRIES ... display the B-Tree entries for an object. (see "NODES" footnote). Example: VSODS VSOD $c8000000 DUMPENTRIES Note: each of the following three options generates more and more output: DUMPENTRIES, DUMPSUBENTRIES, DUMPVIRGIN DUMPMAP ... displays detailed information about every VSOD (thousands of lines of text); Example: VSODS DUMPMAP DUMPSUBENTRIES ... display the B-Tree subentries for an object (there a maximum of 4 to 8 subentries per entry). (implies DUMPENTRIES!) Example: VSODS VSOD $c8000000 DUMPSUBENTRIES DUMPVIRGIN ... display the VSM Virgin Space Map for each extent in the Extent B-Tree node (implies DUMPENTRIES and DUMPSUBENTRIES!) Example: VSODS VSOD $c8000000 DUMPVIRGIN ENDINGVA ... show the ending virtual address (.offset) FILEINFO ... list some file information (e.g., file label) Example: VSODS FILEINFO FILENAMES ... list the filename for any file-related objects (if possible) Example: VSODS FILEINFO FMTObjclass ... default to on if term width >= 132. FOLDAR ... "fold" the Extent Access Rights B-Tree in with the Extent B-Tree. (By default, the Extent Access Rights B-Tree is ignored.) FREESPACE ... lists free space distribution report (about 5 lines of text); Example: SR6 FREESPACE INDENT ... (for DUMPENTRIES and DUMPSUBENTRIES) Indent lines to show B-Tree tree structure. Example: VSODS VSOD $c8000000 DUMPENTRIES JSnum ... adds a Job/Session number field to the output. Note: not all files have job/session information associated with the gdpd. List ... lists every Virtual Space Object Descriptor (VSOD) associated with an object in SR6 and/or SR7 space; (Hundreds of lines of text.) Note: most options also imply LIST. NUMObjclass ... usually on. Ignored if FMTOBJclass is on. PID ... display the PID for the object PIN ... display the PIN that may own the object For process private data, based upon each PIN's stack SID. For files, based on the first file open currently associated with the file (we follow the gufd to the gdpd to the plfd). (May not be the same as the PIN that initially opened the file, as it could be gone by now.) QUICK ... suppress the display of the summary information (usually implied by the SID option) SLOWfnames ... use very slow code to lookup the names of HFS files. Normally, HFS filenames are left partially blank. SLOWFNAMES tells TBLTEST to call hpdir_get_path_from_ufid to lookup a filename ...and this can take many seconds. (Implies FILENAMES) SUMmary VERBOSE Sample use for people concerned about SR6/SR7 space: sr6sr7 Sample use for people concerned about Extent B-Trees: sr6sr7 list other entries 2 tableSIZEs [ | ] which ::= kso ::= kso# | kso_name Reports the size of the specified table. THMGR [options]* options ::= noVerbose | List | USE If you wish, TBLTEST can use the same name for some tables as is used by Threshold Manager. You can see the list of names used by Threshold Manager (and the names TBLTEST uses) by doing: THMGR LIST THMGR USE will make TBLTEST use the Threshold Manager names ... there is no option to revert back to TBLTEST's names. USEqq filename [Quiet] [QUIETError] Read/execute commands from the specified file. USE will echo the commands as they are read, USEQ will not echo them. USEQ implies USE with QUIET. USEQQ will not echo them, and will not complain if the file does not exist. USEQQ implies USE with QUIET and QUIETERROR. VPN vpn# Converts a virtual page number (52-bit value) to a virtual address. WATCH ... Shorthand for "MIBS WATCH ...". WHATObject address [address...] Tries to determine which KSO (object) the address is part of. Note: many objects on the system do not belong to a KSO, as many are part of non-KSO data structures. CLEARREDO DO xxx LISTREDO REDO [xxx] ---------------------------------------------- --------------------------------------------------------------- VSOD = Virtual Space Object Descriptor Every range of virtual address space has a VSOD assocated with it. When a virtual address range (an "object") is allocated, the code requesting the allocation tells MPE where the object should "reside": should it have its own Space ID (and therefore require a 64-bit address), or should it be SR6 addressable, or SR7 addressable, or a few other options. (This information is remembered in the virtual_location field of a VSOD.) Object that are allocated as SR6 or SR7 addressable occupy a valuable and limited area of memory on a PA-RISC computer, which is two areas of 1 GB each. Thus, a system can never have more than 1 GB of SR6 addressable space, or more than 1 GB of SR7 addressable space. A VSOD contains the following fields (as of MPE/iX 6.5): vs_od_type = record semaphore : semaphore_rec; {$0 @ 10} base_va : va_type; {$10 @ 8} ending_va : va_type; {$18 @ 8} current_size : longint; {$20 @ 8} options : obj_options_type; {$28 @ 4} virtual_location : virtual_location_type; {$2c @ 1} access_rights : access_rights_type; {$2d @ 1} pid : pid_type; {$2e @ 2} new_options : obj_new_options_type; {$30 @ 1} init_byte : byte; {$31 @ 1} object_class : bit16; {$32 @ 2} shared_vs_unit_desc_id : bit16; {$34 @ 2} obj_cache_desc_ptr : localanyptr; {$38 @ 4} case object_kind_type of swappable_object, file_object: ( current_sec_storage_pages : bit32; {$3c @ 4} max_sec_storage_pages : bit32; {$40 @ 4} b_tree_root : b_tree_root_type; {$44 @ 8} dev_restriction : t_exo_id; {$4c @ 8} vs_ll_header_num : integer; {$54 @ 4} case boolean of true: ( first_shr_page_desc_ptr : shr_page_desc_ptr_type; {$58 @ 4} last_shr_page_desc_ptr : shr_page_desc_ptr_type; {$5c @ 4} ); false: ( code_locality_desc : code_locality_desc_type); {$58 @ 8} end; {$60 bytes} --------------------------------------------------------------- The Extent B-Tree table entries are officially called "nodes", and each node has up to 4 entries in it. TBLTEST used to refer to these are nodes and entries, respectively. However, the Extent B-Tree table is managed by Table Management, and it refers to the "slots" that it allocates/deallocates as "entries" (and our other commands that refer to table management tables also use that term). So, TBLTEST now calls the nodes of the Extent B-Tree table "entries" .. because these are the things users might run out of. The lesser items (four to 8 per node) are referred to as "subentries" by TBLTEST. --------------------------------------------------------------- Some commands (INFO, SEMAPHORE, SR6, SR7, VSODS) have the ability to direct their output to a disk file instead of to $stdlist. This redirection is requested via the use of "TO", "APPENDTO", or ">" or ">>" on the command line. The syntax for the redirection is: TO | > filename [options]* or APPENDTO | >> filename [options]* and: options ::= APPEND | | AOPTIONS # | BLOCKFACTOR # | FILECODE # | FOPTIONS # | KEEP | LIMIT # | RECCHARS # Defaults: DELETE FOPTIONS 4 AOPTIONS 1 RECCHARS 256 LIMIT 400000 (The FOPTIONS, AOPTIONS means "F, ASCII, NEW; OUT".) --------------------------------------------------------------- Every semaphore has a "type" (stored in the "sem_spec" field), which is one of: interrupt 0 standard 1 priority 2 nested 3 sharable 4 pdisable 5 std pri 6 cm pdisable 7 decayable 8 nested pdisable 9 spin block 10 Normally, TBLTEST reports semaphore types by name. If you do "SET SEMSPEC", then semaphore types will be reported by name and number. --------------------------------------------------------------- 2017-08-11 Added PTRS option to SHOW LRU Added a line of explanation to SHOW LRU output Slightly revised KSO output. Added CLASS option. Added WHATObject command. 2015-12-16 Added MEMTIMER command 2015-12-10 Cleaned up some scanning code Cleaned up help text a bit 2014-10-03 Added TBLDEBUG option 2014-09-03 Added FLUSH command Added ANY/OPEN/CLOSED to "SHOW LRU" 2014-08-24 Added MBs info to SHOW SSM Added code to report VOLUTIL/CONDENSE status (if active) 2014-08-19 Removed expiry 2012-11-23 Added help for LISTSEMS Improved checking code in check_deadlock. 2012-05-30 Re-added VPN command 2012-05-18 Fixed SEM ANALyze problem which caused potentially incorrect semaphore to be analyzed for deadlocks. (temporarily removed VPN command) 2011-05-10 Added VPN command (to aid in dump analysis). 2011-05-10 Fixed dumpvirgin to show only the in-use/valid. 2011-01-31 Added UFID restriction for VSOD command. Expanded DskPgs from 7 to 9 chars. 2010-12-01 Added 'ALL' option to PIN command. Added JSNUM field to VSOD (VSOD ... JSnum) ... only valid for some files. 2010-11-30 Added code to determine PIN of file objects. 2010-11-29 Added report of matching objcl to OBJCL PARSE Added OC as synonym for OBJCL in VSOD Added showing # entries used by which PIN & progname to the VSOD PIN option. Added PIN # command. 2010-11-09c Added LVSET to VSODS command. 2010-11-09b Made SID and LSID take option range, and allow multiple occurances. 2010-11-09 Made SLOWFnames imply FILENAMES for VSODS command. 2010-11-02 Added DUMPMVT command. 2010-11-01 Added LSID option to VSODS command. 2010-09-03 Added JSMAINS command 2010-06-04 Added trap check for cb_header call. Added some more help text. 2010-02-02 Fixed false report of "free" for some semaphores (they did, however, have an owner pin listed, which should have implied they were locked). Added "SET SEMSPEC" to allow people to be reminded of the numeric type of semaphores (not useful to most people, generally). 2009-06-30 Added PINSonly restriction to SR6SR7/etc options. 2009-03-10 Revised help for SR6SR7/etc "dump" options. 2008-11-06 Added the SHOW and FLUSHFILE commands. 2008-10-30 Added THMGR command. 2008-07-30 Added PRESSURE command. Added MM command. Changed MIBS command to default to showing PINs. 2008-07-29 Added BFREE, BFREE1, and BFREE2 options to the VSODS command. Fixed problem specifiying Object class # in VSODS command. 2008-02-13 Added PEEKLoad command. 2008-02-12 Added ability for SAVE command to save names of files referenced by VSODs. (Filenames are automatically loaded by LOAD command.) 2008-01-23 LOAD/SAVE commands added. 2008-01-16 Added report of # of KBs of SR6 and/or SR7 space used by various object classes. The report is shown if a "Verbose" option is specified. For SR6 or SR7 commands, only the space used in SR6 or SR7 is used. For SR6SR7 command, the sum is shown unless VERBOSE2 is specified (which will cause each quadrant to be reported separately). 2008-01-11 Added a "SAVE" command to save VSM (and, optionally, MM) tables to a disk file for later analysis. 2008-01-10 The new "VSOD BFREE" command analyzes your system to determine how many Extent B-Tree entries could be saved with the Allegro BFree product. The VSOD command has a new options, PIN and PIN=#. 2007-12-13 Several commands have a "TO" option ... help text has been expanded to document this. 2007-02-13 TBLTest now has the SEMAPHORES ANALYZE command. 2007-02-11 TBLTest now has a SEMAPHORES command. 2007-02-07 TBLTest now includes the functionality of our MIBS utility. New commands are: FINDSID, HLIO, LOOKfile, MIBS, and WATCH. --------------------------------------------------------------- tbltest 20180813