Working with Event 200 (Resources Per Process)

This event applies to the application server and the Process Scheduler server.

The PeopleSoft system makes specific operating system calls to obtain metrics for %CPU that are used by the process, CPU time consumed, virtual memory size, and working set size. Operating systems have slightly different definitions for these quantities and different ways of reporting them. For instance, "working set" memory is a Windows term; "resident set" is the UNIX equivalent. PeopleSoft strives for consistency across platforms. For example, PeopleSoft expresses %CPU within a range from 0 to 100 on all machines even though some vendors scale to N*100% if multiple CPUs (N CPUs) exist.

Microsoft Windows and Linux compute one or more resources as an average of the two measurements at the beginning and end of a sampling interval. On these platforms, the Performance Monitor does not report an Event 200 (Resources Per Process) until the second sampling interval after you boot a server.

Process resource utilization is usually sampled by the operating system and written to a memory location. Windows writes to the registry, while UNIX writes to various files. The system reads the current values for the process, so events change only when the operating system updates the statistics. Most operating systems update these statistics at least once per second.

PeopleSoft obtains all information using lightweight, C++ programmatic APIs. No additional processes or shell commands are run.

Operating System Description

Windows

Performance Monitor uses Performance Data Helper (PDH) to read registry counters. The information is identical to the Windows Performance Monitor tool. When multiple copies of a process, such as PSAPPSRV, are running, registry counters are assigned arbitrarily. For example, counter 1 and counter 2 can reverse their process assignment when a process reboots. Performance Monitor corrects for this.

  • CPU utilization is "% Processor Time," defined as the fraction of time that the process spends in kernel + user during the last PDH sampling interval (typically one second).

  • Process time is kernel + user, accurate to 1 millisecond.

  • Virtual memory is "Virtual Bytes."

  • Working set memory is "Working Set," which is the same as "Mem Usage," displayed by the Windows Task Manager.

AIX

Performance Monitor reads the psinfo files, which is the same source of information that AIX uses for its "ps" command.

  • CPU utilization is the same as "ps -o pcpu" or the %CPU from "ps v". AIX defines it as a lifetime average: total CPU time that is consumed by the process divided by total time that the process has been running.

  • Process time is system + user, excluding children. Accurate to 10 milliseconds.

  • Virtual memory is the same as "ps -o vsz", or the 1024 * SIZE field from "ps v".

  • Resident set memory is the same as the 1024 * RSS field from "ps v".

HPUX

Performance Monitor reads pst_status using pstat_getproc.

  • CPU utilization is the same as "top" divided by the number of CPUs (on HPUX "top" shows utilization of a single CPU).

  • Process time is system + user, excluding children.

  • Virtual memory is the same as the SIZE field from "top".

  • Resident set memory is the same as the RES field from "top".

Linux

Performance Monitor reads ps information from /proc files.

  • CPU utilization is the same as "top" divided by the number of CPUs (on Linux "top" shows utilization of a single CPU). It is the average utilization over the last sample period.

  • Process time is system + user, excluding children, and accurate to 10 milliseconds. The times for all threads in the process are added together.

    Warning! Linux kernel 2.4 tracks only the process time of each thread. PeopleSoft searches the /proc directory to find all threads and report the total time of the process. However, on a production system with thousands of threads, accumulating this information may take up to a second of CPU time.

  • Virtual memory is the same as "ps -o vsz" (not visible in "top"). According to the man pages, it counts just text, data, and stack.

  • Resident set memory is the same as "ps -o rss" (not visible in "top"). This value includes just text, data, and stack.

Solaris

Performance Monitor reads psinfo files, which is the same source of information that Solaris uses for its "ps" command.

  • CPU utilization is the same as "top". Solaris computes a moving average with exponential weighting.

  • Process time is system + user, excluding children, and accurate to 10 milliseconds.

  • Virtual memory is the same as "ps -o vsz" or the SIZE field from "top".

  • Resident set memory is the same as "ps -o rss" or the RES field from "top". On Solaris, shared libraries are counted in RES but not in SIZE.

OS/390

The only metric that is supported in the current release is Process Time.