//%2006//////////////////////////////////////////////////////////////////////// // // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.; // IBM Corp.; EMC Corporation, The Open Group. // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.; // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; // EMC Corporation; VERITAS Software Corporation; The Open Group. // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.; // EMC Corporation; Symantec Corporation; The Open Group. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to // deal in the Software without restriction, including without limitation the // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or // sell copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //============================================================================== README - Using the PEGASUS CIMSERVER STATISTICS Author: Karl Schopmeyer Date: 14 March 2006 The OpenPegasus CIMServer provides for gathering statistics on the CIM operations executed by the server based on the CIM_CIMOMStatisticalData class defined in the DMTF CIM_Interop model. Statistics are gathered on all CIM Operations executed by the server when the statistics are enabled. When the statistics are enabled, the server gathers times and request and response counts on each operation executed and maintains these counts and times from the time the statistics were started. For each operation executed the following are gathered. * request size * response size * time spent in the server * time spent in the providers For each operation type defined (ex getclass, etc.) an instance of the CIM_CIMOMStatisticalData class provides the following properties: * OperationType Enum (Value/Valuemap) defining the CIM operation type. * NumberOfOperations - Number of operations executed for this OperationType since the server was started or the statistics were turned on whichever occurred later. * CimomElapsedTime - Total time spent in the CIMServer for this operation in microseconds. This does not include time spent in the providers. That is defined by the ProviderResponseTime. This includes http processing, authentication, xml parsing and validation, routing, etc time that is common to all requests. * ProviderElapsedTime - Total time spent in the targeted providers for this operation. Note that for class and qualifier operations (ex. getclass) this is the time spent in the Pegasus Class repository. Further, if repository requests (ex getclass) are required in the server infrastructure to process an operation, that time is included as part of the server time, not provider time. The goal of providing this number is to measure times in the providers that are the support for the class(s) that represent the target of this operation. * RequestSize - Total size of the requests for this operation type in bytes. * ResponseSize - Total size of the responses for this operation type in bytes. At any time, the statistics gathered by an OpenPegasus CIMServer can be requested by a CIM client by enumerating the instances of the CIM_CIMOMStatisticalData class from a client to the Pegasus server in the PG/Interop namespace. Note that there is no reset of statistics. They are continuously gathered and accumulated and, the counts wrap when they exceed the size of the property. The client tool (cimperf) reports on averages for the times and byte sizes from the totals provided by the CIM_CIMOMStatisticalData instances. ENABLING AND DISABLING STATISTICS GATHERING The statistics are normally disabled when the server environment is compiled. The enabled/disabled status of statistics gathering is controlled through a property in the CIM_ObjectManager instance (GatherStatisticalData) maintained by the server and persisted through the life of the instance repository. The test client CLI includes a special set of operations (son and soff) that directly set the GatherStatisticalData property true or false effectively enabling/disabling statistics gathering. ex. CLI son - turns the statistics gathering on. CLI soff - turns the statistics gathering off. Once statistics gathering is enabled or disabled this state is maintained through cimserver or system restarts until either changed again or if the repository is removed or the instance of the CIM_ObjectManager class is reset or removed. The cimserver does not maintain gathered statistics information if the erver is stopped. Each startup of the server restarts all statistics counts from zero. Disabling the statistics gathering also causes all of the statistics counts to be reset to zero in the server. CLIENT OPERATIONS STATISTICS REPORTING In addition to the statistics reported through the CIM_CIMOMStatisticalData the OpenPegasus server is capable of reporting operation execution time to the client as part of each operation executed. This function also is only active when the statistics gathering capability has been enabled. The passage of this information is defined in the DMTF CIMOperations specification (Version 1.2, 3.3.16. WBEMServerResponseTime). Within the OpenPegasus Client API there is a specific operation to request this information as part of each CIM operation. This reports the total time spent in the CIMServer (server plus providers) for the last operation executed. As an example, this is implemented in CLI. LIMITATIONS Currently no statistics are maintained on indications processed. Provision is made in the DMTF CIM_CIMOMStatisticalData class for gathering of indication statistics but the exact form of the information is in question because this differs from operations so this has not been implemented to date. The client statistics test tool cimperf only prints out the current statistics each time it is executed. There are no client tools in the current pegasus environment to maintain statistics history, show trends, etc. If statistics are disabled, the statistics instances will still be output by the cimserver but will show zero for all values. There are no automated tests today for the numbers accumulated by the statistics gathering components. The validity of the numbers produced in the CIM_CIMOMStatisticalData instances has been verified by manual inspection However, Currently there are no automated test to programatically verify the statistics are correct.