WBEM Provider Data Sheet

UNIX Process Provider

This data sheet provides information about the Pegasus UNIX Process WBEM provider (implemented using the Pegasus C++ API).

This provider supports the CIM_Process, PG_UnixProcess, and PG_UnixProcessStatisticalInformation classes. The intended audience of this document is software professionals who will design, implement, enhance, and/or support client applications that will use this provider.

This data sheet is maintained in open source and is updated frequently.  This version was last updated 17-May-2002.  See the Pegasus open source site (http://cvs.opengroup.org/cgi-bin/cvsweb.cgi/pegasus/), location pegasus/src/Providers/ManagedSystem/Process/doc/ProcessProvider.html, for the most recent version.


Keywords:  (Pegasus C++ API, HP-UX, Process, Unix Process, CIM_Process, CIM_UnixProcess, PG_UnixProcess, Statistical Information, CIM_UnixProcessStatisticalInformation, PG_UnixProcessStatisticalInformation)

Table Of Contents

1.      Provider Overview (Description, Requirements, Release History, Supported Managed Resources, Special Requirements & Dependencies)

2.      Setting Up This Provider (Installing, Configuring)

3.      Using This Provider (Schema Supported, Indications Generated, Associations Provided)

4.      Links To More Information (Additional Provider Documentation, WBEM Information, Managed Resource Information, Client Information, Support Contacts, Migration and Co-existence Information, Possible Provider Enhancements)

5.      Limitations, Known Defects, and Performance Considerations


1. Provider Overview

·         Description
The UNIX Process Provider  makes available basic UNIX process information such as name of the executable image, process ID, priority, execution state, and various process resource utilization statistics. In addition to implementing the properties of CIM_Process, this Unix Process Provider implements the properties anticipated for CIM_UnixProcess and CIM_UnixProcessStatisticalInformation in CIM v2.6 (final).  Because CIM v2.6 (final) has not been officially released at this time, the classes are implemented as PG_UnixProcess and PG_UnixProcessStatisticalInformation.  Client applications can use this provider to give clients an understanding of the processes running on the Managed System within the context of its operating system.  The current implementation is for HP-UX only.

·         Requirements
Implemented and tested on HP-UX 11.11 based systems.

·         Release History
15-May-2002 - initial release, submitted to Pegasus open source community.

·         Supported Managed Resources
Managed systems (servers and appliances) running HP-UX 11.0 and 11.11.

·         Special Requirements & Dependencies
None.


2. Setting Up This Provider

·         Installing This Provider

This Unix Process provider is available from the Pegasus open source site  (http://cvs.opengroup.org/cgi-bin/cvsweb.cgi/pegasus/) with the following CVS tree locations:

·        Makefile, headers, and source:  pegasus/src/Providers/ManagedSystem/Process/

·        Schema MOF file:  pegasus/Schemas/pegasus/ManagedSystem/VER20/PG_UnixProcess20.mof

·        Provider registration MOF file: pegasus/Schemas/pegasus/ManagedSystem/VER20/ PG_UnixProcess20R.mof

The provider executable is "libProcess.sl".  The provider is registered to support the “root/cimv2” namespace as an instance provider.  There are no special installation instructions; the provider will be installed by default in most Pegasus-based product releases.

·         Configuring This Provider
This provider does not accept specific configuration adjustments (beyond standard WBEM support).


3. Using This Provider

·         Schema supported by this provider

This provider supports the CIM_Process, PG_UnixProcess, and PG_UnixProcessStatisticalInformation classes.  Tables 1 through 5 describe the properties and methods supported by the provider.

Table 1 describes the properties of the CIM_Process class.  It has three columns.  The first is the property name (including type and units), the second is the property inheritance (indicating which class or superclass defines the property), and the third is the property’s value and data source.  Each row describes a property.

Table 1: CIM_Process Properties

 Property Name

Property Inheritance

Property Value
(& data source)

string Caption

Inherited from CIM_ManagedElement

Returns the first argument of the command line for the process.

string Description

Inherited from CIM_ManagedElement

Returns a string containing the entire command line for the process.

datetime InstallDate

Inherited from CIM_ManagedSystemElement

Not implemented.

string CSCreationClassName [Key]

Inherited from CIM_Process.  Propagated from CIM_OperatingSystem.CSCreationClassName.

Returns the string “CIM_UnitaryComputerSystem”.

string CSName [Key]

Inherited from CIM_Process.  Propagated from CIM_OperatingSystem.CSName.

The fully qualified host name returned by the gethostbyname() system call.  If a name service is not available, just uses the hostname return by the gethostname() system call.

string OSCreationClassName [Key]

Inherited from CIM_Process.  Propagated from CIM_OperatingSystem.CreationClassName.

Returns the string “CIM_OperatingSystem”.

string OSName [Key]

Inherited from CIM_Process.  Propagated from CIM_OperatingSystem.Name.

The value of sysname in the utsname structure returned by the uname() system call.

string Name

Inherited from CIM_ManagedSystemElement, overridden in CIM_Process.

The base name of the executable image from the value of pst_ucomm in the pst_status structure returned by the pstat_getproc() system call.

string CreationClassName [Key]

Local to CIM_Process.

Returns the string “CIM_Process”.

string Handle [Key]

Local to CIM_Process.

The process ID, obtained from the value of pst_pid in the pst_status structure returned by the pstat_getproc() system call.

uint32 Priority

Local to CIM_Process.

The process priority, obtained from the value of pst_pri in the pst_status structure returned by the pstat_getproc() system call.

uint16 ExecutionState

Local to CIM_Process.

Based on the process state obtained from the value of pst_state in the pst_status structure returned by the pstat_getproc() system call.  Mapped to ExecutionState as follows:

·   PS_SLEEP: 6 (“SuspendedReady”)

·   PS_RUN: 3 (“Running”)

·   PS_STOP: 8 (“Stopped”)

·   PS_ZOMBIE: 1 (“Other”)

·   PS_IDLE: 2 (“Ready”)

·   PS_OTHER: 1 (“Other”)

·   all other values: 0  (“Unknown”)

string OtherExecutionDescription

Local to CIM_Process.

Returns the string “Zombie” for zombie (PS_ZOMBIE), “Other” for status “other” (PS_OTHER), and NULL for all other values of pst_state as described for ExecutionState above. 

datetime CreationDate

Local to CIM_Process.

The time the process started, obtained using the value of pst_start in the pst_status structure returned by the pstat_getproc() system call.

datetime TerminationDate

Local to CIM_Process.

Not implemented.

uint64 KernelModeTime

Local to CIM_Process.

System time spent executing, obtained from the value of pst_stime in the pst_status structure returned by the pstat_getproc() system call.  pst_stime is multiplied by 1,000 to convert it to milliseconds.

uint64 UserModeTime

Local to CIM_Process.

User time spent executing, obtained from the value of pst_utime in the pst_status structure returned by the pstat_getproc() system call.  pst_utime is multiplied by 1,000 to convert it to milliseconds.

uint64 WorkingSetSize

Local to CIM_Process.

Returns 0 (zero) indicating information is not available.


Table 2 describes the properties of the PG_UnixProcess class.  It has three columns.  The first is the property name (including type and units), the second is the property inheritance (indicating which class or superclass defines the property), and the third is the property’s value and data source.  Each row describes a property.

Table 2: PG_UnixProcess Properties

 Property Name

Property Inheritance

Property Value
(& data source)

The PG_UnixProcess class inherits properties of superclass CIM_Process (as described in Table 1 and not repeated here).

string ParentProcessID

Local to PG_UnixProcess.

The parent process ID, obtained from the value of pst_ppid in the pst_status structure returned by the pstat_getproc() system call.

uint64 RealUserID

Local to PG_UnixProcess.

The real user ID, obtained from the value of pst_uid in the pst_status structure returned by the pstat_getproc() system call.

uint64 ProcessGroupID

Local to PG_UnixProcess.

The real GID, obtained from the value of pst_gid in the pst_status structure returned by the pstat_getproc() system call.

uint64 ProcessSessionId

Local to PG_UnixProcess.

The session ID, obtained from the value of pst_sid in the pst_status structure returned by the pstat_getproc() system call.

string ProcessTTY

Local to PG_UnixProcess.

The full path name (for example /dev/ttyp1) of the TTY device which corresponds to the values of pst_major and pst_minor in the pst_status structure returned by the pstat_getproc() system call.

string ModulePath

Local to PG_UnixProcess.

Not supported.  Note that Unix does not require placing the full path name in the first argument of the command line.

string Parameters

Local to PG_UnixProcess.

The arguments of the command line (including the command itself).  Parsed from the value of the pst_cmd string in the pst_status structure returned by the pstat_getproc() system call.

uint32 ProcessNiceValue

Local to PG_UnixProcess.

The process nice value, obtained from the value of pst_nice in the pst_status structure returned by the pstat_getproc() system call.

string ProcessWaitingForEvent

Local to PG_UnixProcess.

Not implemented.


Table 3 describes the intrinsic methods for CIM_Process and PG_UnixProcess supported by this provider.  It has three columns.  The first is the method name, the second is a description of the provider’s actions based on invoking that method, and the third is a list of any exceptions that could result from invoking the method.  Each row describes a method.  Note that this provider supports no extrinsic methods.

Table 3: Intrinsic Methods for CIM_Process and PG_UnixProcess

 Method Name

 Description

Exceptions Thrown

enumerateInstances

Returns all instances of class with all properties and respective values.

None

enumerateInstanceNames

Returns object path of all instances of class.

None

getInstance

Supported.

CIM_ERR_INVALID_PARAMETER if wrong class for a key.

CIM_ERR_NOT_FOUND if wrong number of keys, or process is not found.

modifyInstance

 

Does nothing.

CIM_ERR_NOT_SUPPORTED

deleteInstance

Does nothing.

CIM_ERR_NOT_SUPPORTED

initialize

Does nothing.

None.

terminate

Does nothing.

None

createInstance

Does nothing.

CIM_ERR_NOT_SUPPORTED


Table 4 describes the properties of the PG_UnixProcessStatisticalInformation class.  It has three columns.  The first is the property name (including type and units), the second is the property inheritance (indicating which class or superclass defines the property), and the third is the property’s value and data source.  Each row describes a property.

Table 4: PG_UnixProcessStatisticalInformation Properties

Property Name

Property Inheritance

Property Value
(& data source)

string Caption

Inherited from CIM_ManagedElement

Returns the first argument of the command line for the process.

string Description

Inherited from CIM_ManagedElement

Returns a string containing the entire command line for the process.

string CSCreationClassName [Key]

Local to PG_UnixProcessStatisicalInformation.  Propagated from CIM_Process.CSCreationClassName.

Always returns the string “CIM_UnitaryComputerSystem”.

string CSName [Key]

Local to PG_UnixProcessStatisicalInformation.  Propagated from CIM_Process.CSName.

The fully qualified host name returned by the gethostbyname() system call.  If a name service is not available, uses the hostname returned by the gethostname() system call.

string OSCreationClassName [Key]

Local to PG_UnixProcessStatisicalInformation.  Propagated from CIM_Process.OSCreationClassName.

Always returns the string “CIM_OperatingSystem”.

string OSName [Key]

Local to PG_UnixProcessStatisicalInformation.  Propagated from CIM_Process.OSName.

The value of sysname in the utsname structure returned by the uname() system call.

string Handle [Key]

Inherited from CIM_Process.

The process ID -- the value of pst_pid in the pst_status structure returned by the pstat_getproc() system call.

string ProcessCreationClassName [Key]

Local to PG_UnixProcessStatisicalInformation.

Always returns the string “CIM_Process”.

string Name [Key]

Inherited from CIM_StatisticalInformation, overridden in PG_UnixProcessStatisticalInformation.

A string representing the current date/time used to make this set of statistics gathered for the process unique.  Note when invoking getInstance, the value of the Name property is ignored in matching the instance.

uint32 CPUTime

(in Percent)

Local to PG_UnixProcessStatisicalInformation.

Percentage of CPU time being consumed, obtained from the value of pst_pctcpu in the pst_status structure returned by the pstat_getproc() system call.  pst_pctcpu is multiplied by 100 to convert it to percent.

uint64 RealText

(in KiloBytes)

Local to PG_UnixProcessStatisicalInformation.

Kilobytes of real text space used by the process.  Obtained by multiplying the value of pst_tsize (part of the pst_status structure returned by the pstat_getproc() system call) by the page size (returned by the getpagesize() system call), and then dividing it by 1,024 (1K).

uint64 RealData

(in KiloBytes)

Local to PG_UnixProcessStatisicalInformation.

Kilobytes of real data space used by the process.  Obtained by multiplying the value of pst_dsize (part of the pst_status structure returned by the pstat_getproc() system call) by the page size (returned by the getpagesize() system call), and then dividing it by 1,024 (1K).

uint64 RealStack

(in KiloBytes)

Local to PG_UnixProcessStatisicalInformation.

Kilobytes of real stack space used by the process.  Obtained by multiplying the value of pst_ssize (part of the pst_status structure returned by the pstat_getproc() system call) by the page size (returned by the getpagesize() system call), and then dividing it by 1,024 (1K).

uint64 VirtualText

(in KiloBytes)

Local to PG_UnixProcessStatisicalInformation.

Kilobytes of virtual text space used by the process.  Obtained by multiplying the value of pst_vtsize (part of the pst_status structure returned by the pstat_getproc() system call) by the page size (returned by the getpagesize() system call), and then dividing it by 1,024 (1K).

uint64 VirtualData

(in KiloBytes)

Local to PG_UnixProcessStatisicalInformation.

Kilobytes of virtual data space used by the process.  Obtained by multiplying the value of pst_vdsize (part of the pst_status structure returned by the pstat_getproc() system call) by the page size (returned by the getpagesize() system call), and then dividing it by 1,024 (1K).

uint64 VirtualStack

(in KiloBytes)

Local to PG_UnixProcessStatisicalInformation.

Kilobytes of virtual stack space used by the process.  Obtained by multiplying the value of pst_vssize (part of the pst_status structure returned by the pstat_getproc() system call) by the page size (returned by the getpagesize() system call), and then dividing it by 1024 (1K).

uint64 VirtualMemoryMappedFileSize

(in KiloBytes)

Local to PG_UnixProcessStatisicalInformation.

Kilobytes of memory used for memory mapped files.  Obtained by multiplying the value of pst_vmmsize (part of the pst_status structure returned by the pstat_getproc() system call) by the page size (returned by the getpagesize() system call), and then dividing it by 1024 (1K).

uint64 VirutalSharedMemory

(in KiloBytes)

Local to PG_UnixProcessStatisicalInformation.

Kilobytes of virtual shared memory.  Obtained by multiplying the value of pst_vshmsize (part of the pst_status structure returned by the pstat_getproc()) by the page size (returned by the getpagesize() system call), and then dividing it by 1024 (1K).

uint64 CpuTimeDeadChildren

Local to PG_UnixProcessStatisicalInformation.

Not supported.  For systems where _RUSAGE_EXTENDED is defined, the value would be determined by summing pst_child_usercycles, pst_child_systemcycles, and pst_child_interruptcycles (both high and low significant bits) from the pst_status structure returned by the pstat_getproc() system call.

uint64 SystemTimeDeadChildren

Local to PG_UnixProcessStatisicalInformation.

Not implemented.  For systems where _RUSAGE_EXTENDED is defined, the value would be determined from the high and low significant bits of pst_child_systemcycles in the pst_status structure returned by the pstat_getproc() system call.

uint64 RealSpace

Local to PG_UnixProcessStatisicalInformation.  (Note this property has not been recommended for inclusion with the proposed CIM_UnixProcessStatisticalInformation class.)

Total real space used by the process.  Calculated by summing pst_tsize, pst_dsize, and pst_ssize from the pst_status structure returned by the pstat_getproc() system call, multiplying the sum by the page size (returned by the getpagesize() system call), and then dividing it by 1,024 (1K).


Table 5 describes the intrinsic methods for PG_UnixProcessStatisticalInformation supported by this provider.  It has three columns.  The first is the method name, the second is a description of the provider’s actions based on invoking that method, and the third is a list of any exceptions that could result from invoking the method.  Each row describes a method.  Note that this provider supports no extrinsic methods.

Table 5: Intrinsic Methods for PG_UnixProcessStatisticalInformation

  Method Name

 Description

Exceptions Thrown

enumerateInstances

Returns all instances of class with all properties and respective values.

None

enumerateInstanceNames

Returns object path of all instances of class.

None

getInstance

Supported.  Note when invoking getInstance, the value of Name, while required, is ignored.  This is because statistical information is extremely dynamic, so the value of name (a time stamp) will have changed between in invocation of enumerateInstanceNames and a subsequent getInstance.

CIM_ERR_INVALID_PARAMETER if wrong class for a key.

CIM_ERR_NOT_FOUND if wrong number of keys, or process is not found.

modifyInstance

 

Does nothing.

CIM_ERR_NOT_SUPPORTED

deleteInstance

Does nothing.

CIM_ERR_NOT_SUPPORTED

initialize

Does nothing.

None.

terminate

Does nothing.

None

createInstance

Does nothing.

CIM_ERR_NOT_SUPPORTED

·         Indications generated by this provider
This provider does not currently generate any indications.

·         Associations provided by this provider
This provider does not currently support any associations (but a logical extension would be the CIM_UnixProcessStatistics association to associate a UnixProcess with UnixProcessStatisticalInformation).


4. Links To More Information

·         Additional Provider Documentation
There is currently no additional documentation for this provider beyond this information and that in the Pegasus source tree (listed in Installing This Provider).

See also man pages for information on the various commands and system calls noted in the descriptions above.

·         WBEM information
For a CIM tutorial, go to http://www.dmtf.org/education/cimtutorial.php.
For information about the Pegasus WBEM infrastructure, see http://www.opengroup.org/pegasus.
For information about WBEMsource, see http://www.wbemsource.org.

·         Managed Resource Documentation
See also the HP-UX man page for pstat(2) and other system calls as referenced in the descriptions above.

·         Client Information
None.

·         Support Contacts
None.

·         Migration and Co-existence Information
None.

·         Possible provider enhancements
Possible enhancements by the open source community to this provider could include the following:

(1)   This provider does not currently support all inherited methods and properties (as indicated in section 3).

(2)   Clarifications of the definitions of the CIM_UnixProcessStatisticalInformation properties could suggest further refinement of the provider implementation for those properties.

(3)   Some properties in PG_UnixProcess and its superclasses could be writable.  For example, a client could modify the value of Priority to move a process’s priority up or down.

(4)   The createInstance and deleteInstance methods could be considered as ways to fork and kill a process respectively.

(5)   The provider currently doesn’t check Flags when invoked by CIMOM.

(6)   The provider currently doesn’t check Property List when invoked by CIMOM. Some properties are more expensive to gather (for example, number of users) and could be skipped if not requested.


5. Limitations, Known Defect, and Performance Considerations

·        This provider does not support all inherited methods and properties (as indicated in section 3).

·        This provider ignores properties lists and flags.


Top of Page


URL: http://cvs.opengroup.org/cgi-bin/cvsweb.cgi/pegasus/src/Providers/ManagedSystem/Process/doc/ProcessProvider.html
Last updated: 17-May-2002
This provider documentation was developed based on the WBEMsource provider documentation template available at http://www.wbemsource.org/wbem-doctemp.