PSL Collection Architecture for Solaris Non-Global Zones
In addition to the existing PSL collection mechanism, the PATROL KM for UNIX uses a new XPC based collection mechanism to support Solaris 10 non-global zones, due to the absence of Perform support for Solaris 10 non-global zones.
PUKSERVER.XPC is a stand-alone executable that communicates with the BMC PATROL Agent through standard input (stdin) and output (stdout) channels connected with pipes. The communication between the BMC PATROL Agent and the XPC server is handled by the SDK libraries through PSL function calls. The basic collectors for all the application classes supported by the XPC-mechanism are in C.
Following figure depicts the PUKSERVER.XPC employed to gather the data for the following application classes: KERNEL, PROCESS_PRESENCE (PROCCONT), ZONE, and POOL. For information about the Solaris non-global zone parameters, see Viewing Solaris non-global zone statistics.
PSL Collection Architecture for Solaris Non-Global Zones
The total CPU utilization of a non-global zone is the sum of CPU utilization by all the processes present in that zone. The PATROL KM for UNIX scans the /proc/ file-system to get CPU utilization of each process and adds this to get the total CPU utilization of the non-global zone. The CPU share information for a non-global zone is fetched using the Solaris APIs for resource control (rctl ).
The value for the number of CPUs in the shared resource processor pool is obtained using the POOL API library (libpool). PUKSERVER.XPC uses the POOL APIs to check if the pool facility is active, and obtains the configuration for pools associated with the non-global zones being monitored. To obtain the percentage of shared resource pool utilization value, the XPC server obtains details of CPUs that belong to the pool, and are bound to the non-global zone.
At regular collection intervals, it fetches the system time and user time for each CPU, to calculate the CPU utilization, by averaging the CPU utilization for the individual CPU in the pool.