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
·
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.
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).
·
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 |
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 |
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 |
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).
·
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.
·
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.
·
This provider does not
support all inherited methods and properties (as indicated in section 3).
·
This provider ignores
properties lists and flags.