Browse Prior Art Database

DekoVert V Program for OS/2 Memory Mapped Performance Hooks

IP.com Disclosure Number: IPCOM000110010D
Original Publication Date: 1992-Oct-01
Included in the Prior Art Database: 2005-Mar-25
Document File: 3 page(s) / 133K

Publishing Venue

IBM

Related People

Bishop, DA: AUTHOR

Abstract

Disclosed is a program for converting a binary collection file of the Memory-Mapped Performance Hooks (MMPH)-type for a single processor machine into a universal normalized data file for use by various post processors (see *).

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 46% of the total text.

DekoVert V Program for OS/2 Memory Mapped Performance Hooks

       Disclosed is a program for converting a binary collection
file of the Memory-Mapped Performance Hooks (MMPH)-type for a single
processor machine into a universal normalized data file for use by
various post processors (see *).

      Special groups of instructions, called hooks, are included at
key points in system and application programs in order to track
execution flow and thereby permit verification testing and
measurement of the efficiency of the program logic.  Each hook has a
unique identity (Major code and Minor code) distinguishing it from
all other hooks, and may or may not include key program variables,
symbols, file names, path names or return codes as data items.

      Previously, hook generation relied on the OS/2* facility known
as SYSTRACE, used in conjunction with a device driver that overlaid
part of the SYSTRACE code in order to redirect the hooks to a
hardware output port.

      Once SYSTRACE begins processing a hook, it is guaranteed there
will be no interruption until the hook has been completed.  The
entire hook, then, arrives at the collector in a continuous stream.

      The individual packets of data consist of a command byte, four
data bytes, and two time tag bytes.

      However, use of the SYSTRACE facility results in an
unacceptably high level of overhead, and extremely variable as well.

      The MMPH facility was developed, wherein the hooks are
generated by inline code which writes to a memory address rather than
to a hardware port.

      With MMPH, the overhead is not only very uniform but is nearly
negligible when compared to the execution times of the services being
reported on.

      A special performance build of OS/2 is necessary because the
MMPH hook generation capability is not contained in the shipped
product.

      By the nature of OS/2's multiprocess/multithread operation,
control passes from one process/thread to another, not necessarily in
the same sequence each time.  An interrupt can cause one
process/thread to stop in the middle of outputting its hook, and some
other interrupt service code to begin outputting its own hook, thus
creating a discontinuous data string with respect to the first hook.
In order to be able to unravel the resultant data stream, it is
necessary that the data outputs not exceed the bus width.  Since the
present code may be run on a 286 machine, it is necessary that
individual packets of data now contain two data bytes.  Multiple
interrupts are possible, thus creating nested hooks.

      Similarly, the dispatcher may cause a switch from one
process/thread to another, thus leaving incompleted hooks on the
process/thread just vacated.

      Individual packets of hooks carry an identity in that the first
packet of a hook is written to a FIRST address and contains the
MAJOR/ MINOR code for that hook, and the remaining packets are
written to a NOT_...