UniData Database (Windows)

Version 3

    This template assesses the status and overall performance of UniData Database using Windows Performance Counters.


    Prerequisites: WMI access to the target server.

    Credentials: Windows Administrator on the target server.


    Note: Tested on UniData v 7.3. For more information, see: http://knowledgebase.solarwinds.com/kb/questions/5180/SAM+cannot+access+some+x86+counters+on+x64+machines.


    Limitations:

    • SAM will be unable to access some 32-bit counters of a x86 Unidata database on a 64-bit operating system.
    • SAM will not be able to monitor a Unidata database server if it is installed on a 64-bit system.

    Monitored Components

    Note: You need to set thresholds for counters according to your environment. It is recommended to monitor counters for some period of time to understand potential value ranges and then set the thresholds accordingly. For more information, see http://knowledgebase.solarwinds.com/kb/questions/2415.

     

    Dynamic Array: COUNT

    This monitor returns the number of dynamic array counts from the Count command.

     

    Dynamic Array: DELETE

    This monitor returns the number of dynamic array deletions from the Del command.

     

    Dynamic Array: EXTRACT

    This monitor returns the number of dynamic array data extractions from the Extract command.

     

    Dynamic Array: FIELD

    This monitor returns the number of dynamic array string extractions from the Field command.

     

    Dynamic Array: FIND

    This monitor returns the number of dynamic array finds from the Find command.

     

    Dynamic Array: INDEX

    This monitor returns the number of dynamic array substring indices from the Index command.

     

    Dynamic Array: INSERT

    This monitor returns the number of dynamic array inserts from the Ins command.

     

    Dynamic Array: LOCATE

    This monitor returns the number of dynamic array locations from the Locate command.

     

    Dynamic Array: MATCHFIELD

    This monitor returns the number of dynamic array substring matches from the Matchfield command.

     

    Dynamic Array: MATPARSE

    This monitor returns the number of dynamic array matrix parses from the Matparse command.

     

    Dynamic Array: REMOVE

    This monitor returns the number of dynamic array element removals from the Remove command.

     

    Dynamic Array: REPLACE

    This monitor returns the number of dynamic array replacements from the Replace command.

     

    Dynamic File: Dynamic File Group Split

    This monitor returns the number of times a group in a dynamic file splits. If your application shows unusual activity and your performance is suffering, consider analyzing and possibly reconfiguring some of your dynamic files.

    Increasing Split.Load makes a file split less often.

     

    Dynamic File: Dynamic File Group Merge

    This monitor returns the number of times a split pair of groups merges back together. If your application shows unusual activity and your performance is suffering, consider analyzing and possibly reconfiguring some of your dynamic files. Increasing Merge.Load makes a file merge more often.

     

    File I/O: File Close

    This monitor returns the number of file closes at the operating system level.

     

    File I/O: File Open

    This monitor returns the number of files at the operating system level. On NT, if the average value in this field is more then 5 (opens per second), performance may suffer.

     

    File I/O: Level 1 Overflow

    This monitor returns the number of level 1 overflows. Compute the total activity by summing Record Read, Record Write, Record Delete. If Level 1 Overflow is more than 10 % of the total activity, use guide to analyze your files and resize them appropriately.

     

    File I/O: Level 2 Overflow

    This monitor returns the number of level 2 overflows. If Level 2 Overflow is more than 2% of total activity, use the guide utility to identify files in level 2 overflow and resize them appropriately.

     

    File I/O: Record Delete

    This monitor returns the number of records deleted by UniBasic commands.

     

    File I/O: Record Read

    This monitor returns the number of records read by UniData commands (other than UniQuery).

     

    File I/O: Record Write

    This monitor returns the number of records written by UniData commands (other than UniQuery).

     

    File I/O: TempFile Close

    This monitor returns the number events when UniData temporarily closes the least recently accessed open file when requests for file opens exceed the limit of open files per process.

     

    Index Statistics: Index Log Read

    This monitor returns the number of reads from an index log file. This occurs when an index which was disabled is re-enabled and updated with the contents of the index log.

     

    Index Statistics: Index Log Write

    This monitor returns the number of writes to an index log file. This occurs while an index is disabled, as UniData tracks changes by recording them in the index log.

     

    Index Statistics: Index Node Merge

    This monitor returns the number of times two nodes merge; this takes place when entries in one or both nodes decrease.

     

    Index Statistics: Index Node Read

    This monitor returns the number of index node reads; a node is a component of the B+ tree structure, and a node is analogous to a block in a hashed file.

     

    Index Statistics: Index Node Reuse

    This monitor returns the number of times a node previously freed by a node merge is used for a node split.

     

    Index Statistics: Index Node Split

    This monitor returns the number of times an index node splits in two; this happens when entries in the original node increase. An unusual amount of split/merge/reuse activity indicates that one or more indexes are not properly sized. Use the Ecl List.Index command to identify these, and then delete and rebuild them.

     

    Index Statistics: Index Node Write

    This monitor returns the number of index node write; a node is a component of the B+ tree structure, and a node is analogous to a block in a hashed file.

     

    Index Statistics: Index Overflow Read

    This monitor returns the number of times UniData reads from an index overflow node. The system creates overflow nodes when the number of keys in an index node exceeds a set limit. The overflow condition is created when the alternate key length of the index is too small for the selected attribute. Reads to and writes from overflow nodes slow system performance.

     

    Index Statistics: Index Overflow Write

    This monitor returns the number of times UniData writes an overflow node. If overflow activity (reads and writes) exceeds 5% of system activity (Index Node Reads and Index Node Writes), use the Ecl List.Index command to identify which indexes are overflowed, and delete and rebuild them using a larger key length. (The default key length is 20 characters.)

     

    Lock Statistics: Exclusive Group Lock

    This monitor returns the UniData-level exclusive lock on an entire group. For most applications, the number of shared group locks exceeds the number of exclusive group locks. If the number of exclusive group locks is larger than the number of shared group locks, one or more files may be overflowed. Identify these with the guide utility.

     

    Lock Statistics: Exclusive Index Lock

    This monitor returns the UniData-level exclusive lock on an index. For most applications, the number of shared index locks exceeds the number of exclusive index locks. If the number of exclusive index locks is larger than the number of shared index locks, one or more index files may be overflowed. Identify these with the List.Index Ecl command.

     

    Lock Statistics: GLM Lock Failure

    This monitor returns the number of times a process attempts to get a physical group lock and fails because the group is already locked. If performance is suffering, analyze your files for overflow.

     

    Lock Statistics: GLM Lock Request

    This monitor returns the number of times a process attempts to get a physical group lock.

     

    Lock Statistics: Lock Failure

    This monitor returns the number of times a process attempts to get a user-level lock and fails because the record is already locked. If performance is suffering, analyze your application for lock handling.

     

    Lock Statistics: Record Lock

    This monitor returns the number of user-level record locks set by commands such as Readl and Readu.

     

    Lock Statistics: Record Unlock

    This monitor returns the number of user-level locks released by commands such as Release.

     

    Lock Statistics: Semaphore Lock

    This monitor returns the number of user-level resource locks set by commands such as Lock and T.Att.

     

    Lock Statistics: Semaphore Unlock

    This monitor returns the number of user-level resource locks released by commands such as T.Det or Ulock.

     

    Lock Statistics: Shared Group Lock

    This monitor returns the UniData-level read-only lock on an entire group.

     

    Lock Statistics: Shared Index Lock

    This monitor returns the UniData-level read-only lock on an index.

     

    Program Control: CALLC Call

    This monitor returns the number of calls to an external C function, From UniBasic Callc statements.

     

    Program Control: CHAIN Call

    This monitor returns the number of UniBasic Chain statement executed.

     

    Program Control: EXECUTE Call

    This monitor returns the number of external UniData command executions (From UniBasic Execute commands).

     

    Program Control: Global Call

    This monitor returns the number of calls to globally cataloged UniBasic programs. In production environment, this number should be much higher than Local Call. If a program is globally cataloged, then users share a single copy of the object code in memory, which reduces both memory requirements and physical I/O load.

     

    Program Control: Local Call

    This monitor returns the number of calls to locally cataloged UniBasic programs. Locally cataloged UniBasic programs involve heavy I/O activity and increased memory demand, because each local call loads a copy of the executable in memory. In a development environment, using locally cataloged programs may be normal. In a production environment, if more than 5% of calls are local calls, examine your application and globally catalog programs for improved performance.

     

    Program Control: PCPERFORM Call

    This monitor returns the number of Pcperform statements, which execute shell or host operating system tasks. Pcperform statements are expensive on NT, because creating a process is slow. If Pcperform Call is consistently more than 1 per second, analyze your application and consider replacing Pcperform logic with C routines.

     

    Portions of this document were originally created by and are excerpted from the following sources:

    Microsoft TechNet, “TechNet Library”, © 2010 Microsoft Corporation.  All rights reserved. Available at http://technet.microsoft.com/en-us/library/bb490957.aspx

    Unidata, “Rocket software”, © 2010 Unidata.  All rights reserved. Available at
    http://www.rocketsoftware.com/u2/resources/technical-resources/unidata