Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ prf(7) — DG/UX 4.30

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

profiler(1m)



     prf(7)                     DG/UX 4.30                      prf(7)



     NAME
          prf - DG/UX operating system profiler

     DESCRIPTION
          Prf is a character special pseudo-device that is used to
          profile the kernel.  The profiler is loaded with an array of
          kernel addresses and is turned ON.  Then, every 100th of a
          second, the value of the program counter is recorded; if the
          processor was executing in kernel code, a counter associated
          with the largest address less than the PC is incremented.
          In this way, you can obtain some indication of the time
          spent in various portions of the kernel.

          The array of kernel addresses is loaded into the profiler
          using the write system call on the prf pseudo-device.  The
          profiler can be turned ON or OFF and its current status can
          be obtained using an ioctl system call.  The results of a
          profiling interval can be obtained using the read system
          call.

          Two bits indicate the state of the profiler.  One bit
          indicates whether it is loaded with a valid set of kernel
          addresses.  The other bit indicates whether the profiler is
          ON or OFF, where ON means that a sample of the PC is being
          collected every 100th of a second and the appropriate
          counter incremented.   The two bits allow only three
          possible states as the profiler cannot be ON unless it is
          loaded with a valid set of addresses.

          In addition to a counter for each kernel address, the
          counter after the last kernel address records the number of
          times the PC was at a user address, and the counter after
          that records the number of times the PC indicates the system
          was idle.

          In a multiprocessor system, each processor may be
          independently profiled, or all processors may be profiled
          together.  If a prf special file with minor device number
          255 is opened, all processors will be profiled together.  If
          a prf special file with minor device number other than 255
          is opened, the processor with id equal to the minor device
          number is profiled.  For example, on an AV 5120, opening
          minor device 0 will profile processor 0, opening minor
          device 1 will profile processor 1, opening minor device 255
          will profile both together, and any other minor device
          number is illegal.

          NOTE:
               If multiple processors are profiled together, each
               processor generates counter increments.  The total of
               all counters on a dual processor, for example, will be
               twice that of a single processor.



     Licensed material--property of copyright holder(s)         Page 1





     prf(7)                     DG/UX 4.30                      prf(7)



          For the open and close system calls, user visible
          functionality is the same as for an ordinary disk file.

          The read system call allows the caller to obtain the current
          array of kernel addresses and the corresponding counter
          values.  The data is arranged as an array of N addresses
          followed by N+2 counter values, where N is the number of
          addresses stored in the profiler using the write system
          call.  The file pointer is ignored by the profiler; each
          call to read transfers information into the caller's buffer
          starting at the beginning of the array of N addresses and
          continuing up through the last counter value or to the end
          of the user's buffer.  If the profiler state does not
          indicate that it contains a valid set of kernel addresses,
          the "read" system call returns the error ENXIO and the
          caller's buffer is not modified.  If profiling is enabled,
          the counter values returned may not be consistent because
          they are modified while the read is in progress.

          The write system call allows the caller to store a set of
          kernel addresses into the profiler.  The caller's buffer is
          presumed to contain an array of kernel addresses in
          ascending numerical order.  The array is copied into the
          profiler's storage area, the counters associated with the
          addresses are initialized to zero, and the profiler state is
          marked as containing a valid set of addresses.  The number
          of kernel addresses stored, as determined from the size of
          the caller's buffer, is recorded in the profiler.  If
          profiling is enabled, the write call will fail and the error
          EBUSY will be returned.

     ERROR MESSAGES
          Several consistency checks are made, and errors may be
          returned as indicated below:

     ENOSPC   The size of the caller's buffer indicates that it
                contains more kernel addresses than the implementation
                defined maximum the profiler can store.  The state of
                the profiler is left unchanged.

     E2BIG   The size of the caller's buffer indicates that it
                contains fewer than 3 kernel addresses, or the size
                modulo the size of an address is not zero.  The state
                of the profiler is left unchanged.

     EBUSY   The profiler is currently ON.  The state of the profiler
                is left unchanged.

     EINVAL   The array of kernel addresses is not in ascending
                numerical order.  The profiler is left in the state of
                not containing a valid set of kernel addresses.




     Licensed material--property of copyright holder(s)         Page 2





     prf(7)                     DG/UX 4.30                      prf(7)



          The ioctl system calls allows the caller to obtain the
          current status of the profiler and to turn it ON and OFF.
          Each of the "command" arguments to ioctl is described below:

     PRF_GETSTATUS   The current status of the profiler is returned as
                       an integer in "arg".  The low-order bit set
                       indicates the profiler is ON; the next to low-
                       order bit indicates the profiler is loaded with
                       a valid set of adresses.

     PRF_GETSIZE   The number of kernel addresses currently in the
                      profiler is returned as an integer in "arg". If
                      the profiler does not contain a valid set of
                      addresses, the results are undefined.

     PRF_SETSTATE   The low-order bit of "arg" is used to set the
                      state of the profiler to ON (the bit is set) or
                      OFF (the bit is clear).  If the profiler does
                      not contain a valid set of addresses, this
                      command has no effect.

     PRF_GETMAX   The maximum number of kernel addresses the profiler
                      can store is returned.

          If "command" is other than those listed above, the error
          EINVAL is returned.

          Select always returns READY for both read and write
          operations.

     FILES
          /dev/prf

     SEE ALSO
          profiler(1m).




















     Licensed material--property of copyright holder(s)         Page 3



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026