Warning: This HTML rendition of the RFC is experimental. It is programmatically generated, and small parts may be missing, damaged, or badly formatted. However, it is much more convenient to read via web browsers, however. Refer to the PostScript or text renditions for the ultimate authority.

OSF DCE SIG R. Friedrich (HP)
Request For Comments: 32.0 June 1993

REQUIREMENTS FOR PERFORMANCE INSTRUMENTATION OF

DCE RPC AND CDS SERVICES

INTRODUCTION

Managing applications in a distributed environment is a complex task. The DCE Serviceability SIG has published a requirements document that focuses on isolating, diagnosing and correcting error conditions [Hubb]. The DME Managed Objects SIG has specified the requirements for managed objects [Sear]. However, performance related tasks such as configuration planning, application tuning, bottleneck analysis, and capacity planning require supplementary data. These performance measurement capabilities are a necessary component of any commercially viable computer technology.

This RFC represents work done by the DCE Performance SIG. It complements the DCE and DME management working groups by proposing the requirements and capabilities to monitor the performance of a DCE cell. To accomplish this we discuss the requirements for performance monitoring, the metrics that are of interest to performance analysts, and the instrumentation necessary to collect performance data.

The guiding philosophy is to define a set of standardized performance instrumentation that can be consistently collected, reported and interpreted in a heterogeneous environment. Furthermore, the proposed measurement system should be compiled into the core DCE services for use at customer sites. This requires strict limits on acceptable overhead.

A companion RFC, RFC 33.0, discusses a proposed measurement system architecture and design guidelines for the collection, analysis and presentation of performance data [Frie].

Minimum Content for DCE 1.1.*

This proposal focuses on the DCE RPC and CDS services. These have been determined to be the most important minimal subset for performance monitoring. (The security service is also a critical component, but due to its evolution, we have delayed addressing it.) A future work group proposal will extend performance monitoring capability requirements to all DCE services.

We also propose a generic server performance interface (GSPI) that application developers can use to automatically compile performance instrumentation into their client and server source.

The working group's goal is to establish requirements so that OSF can begin deployment of core instrumentation with the DCE Release 1.1.* and then roll out additional instrumentation in later releases.

The following list summarizes the minimum content for DCE release 1.1.*:

  1. General.
    1. Define common data collection interfaces and implementation for RPC and CDS components.
    2. Define common data collection interfaces for generic server performance interfaces.
    3. Establish guidelines for data collection interfaces for other DCE components.
    4. Establish guidelines for the reporting of collected data.
  2. RPC instrumentation.

    Develop rpc_msmt routines that include data on response times, service requirements, queue lengths, bytes transferred, messages rejected (errors), etc.

  3. CDS instrumentation.

    Develop cds_msmt routines that include data on response time, service requirements, queue lengths, type of entry accessed (group, profile), etc.

  4. Generic server performance interface.

    Develop/extend IDL and run time libraries to support automatic performance instrumentation in application servers. See section 5.7 for details.

  5. Standard OS measurement interface.

    Develop a consistent interface for collecting key host OS performance metrics (such as node-wide CPU utilization, disk I/O rates, network traffic) so that it can be reported through the same presentation services as the DCE metrics.

  6. Documentation.

    Create a user guide for collecting and reporting performance data. Create an application developer guide on instrumenting application servers.

Terminology

To ensure consistent meaning the following terms are defined for use in this document.

  1. Metrics.

    Metrics specify those measurable quantities that form the criteria to evaluate the performance of a system under study. They can be raw information (such as events) or derived quantities such as statistical measures.

  2. Instrumentation.

    Instrumentation are specialized software components incorporated into programs to provide mechanisms for measuring events and calculating the relevant performance metrics. The basic measurement techniques are counting, sampling and tracing. The objective of instrumentation is to provide measures of resource utilization (such as CPU, memory, I/O, network, etc.) and processing time (such as service time, queuing time, etc.) that can be analyzed as frequency and time histograms, or delivered as statistical measures.

    The type of instrumentation that we propose utilize high-level procedure call statements and macros that can be incorporated into the specific DCE services at strategic locations. This is supplemented with IDL enhancements to capture client and generic server performance data through automatically created performance interfaces.

  3. Performance monitor.

    A process that provides on-going collection and reporting of performance data for evaluation by system manager, application designers and capacity planners.

  4. DCE client.

    A software process/thread executing on a particular network node. A DCE client is usually a custom developed application that issues RPC requests to a DCE server but can also be a core DCE service making a request of another DCE server.

  5. DCE server.

    A software process/thread executing on a particular network node. A DCE server can be a core DCE service (such as the rpcd) or a custom developed service. For the purpose of this paper the hardware server will be referred to as a network node.

MOTIVATION

Performance instrumentation collects and displays performance information to the cell administrator, system administrator, application designer, and the system designer.

Sufficient capabilities must exist on any viable commercial computer system to answer the many performance related questions that arise during operation:

  1. Why does it take so long to complete this operation?
  2. Should I replicate my CDS?
  3. What is the impact on throughput for the various levels of security?
  4. How should I plan for a 2X increase in application workload demand?
  5. How can I optimize the resources of the cell for month's end processing?

Performance instrumentation and monitors are necessary to avoid, identify and resolve performance bottlenecks. Users cannot succeed with the deployment of a new technology without the ability to monitor and manage their new applications. Furthermore, it should be emphasized that:

    What cannot be measured cannot be managed nor improved.

The following summarizes the motivation for performance instrumentation:

  1. Provide the data to software designers to understand complex, dynamic system behavior that can be utilized for algorithm design trade-off analysis.
  2. Provide data to vendors and application designers to evaluate design and implementation trade-offs.
  3. Provide system administrators/managers with the data for system sizing and acquisition.
  4. Provide system administrators with the data to determine if response time goals are being met, assess the load of a particular application, balance the load of the current system and plan for future capacity growth.
  5. Provide system administrators with the data to determine evolution of configuration and workload demands for capacity planning.
  6. Provide distributed data to system administrators to eliminate the single point of failure problem associated with centralized services.
  7. Provide data for modeling inputs to characterize the scalability of DCE services and model application and systems.

Without this data it will be difficult to deploy and manage DCE-based applications.

SCOPE OF PROPOSAL

Our initial work will focus on identifying required metrics and instrumentation for RPC and CDS. Future activities will expand to include identifying where instrumentation should be placed (this will likely require close support from OSF and technology suppliers) and the design of the actual instrumentation (algorithms and data structures) [Frie].

Related Activities

As we investigated the need and requirements for DCE performance instrumentation we discovered that there exists several related activities. How we incorporated their requirements are discussed for each:

  1. Serviceability. -- Work is progressing in the definition of an event tracing mechanism. This is described in the RFC [Hubb]. Our proposal would use this service for an optional most detailed collection level.
  2. Managed Objects Subgroup. -- This DCE Management SIG group is defining a set of managed objects for the DCE [Sear]. We have reviewed their proposal and most of our metrics have been incorporated into the managed object definitions.
  3. UI PMWG Measurement Interface. -- Our desire is compatibility through our standard OS interface definition [UI]. This requires additional investigation to determine the degree of leverage that is available for both the DCE and PMWG measurement interfaces.
  4. SNMP/CMIP and network management. -- We need to investigate SNMP MIBs or OSI CMIPs as a possible data storage/interoperability mechanism.

Non-Related Activities

The following items are not specifically addressed by this requirements document.

  1. Trend analysis/capacity planning.
  2. Accounting.
  3. Fault/error detection.

PERFORMANCE MEASUREMENT SYSTEM REQUIREMENTS

We have identified the following requirements for the successful design of standardized instrumentation and a measurement system.

REQT: General

The following general requirements should be satisfied by the measurement system.

  1. It is important that from the end users perspective different vendor solutions converge to provide a seamless, single view of the DCE cell. This implies that in a heterogeneous network the DCE measurement system must collect data from a range of vendor systems (nodes) and present it for analysis in a consistent manner.
  2. Define a common set of performance metrics and standardized instrumentation to ensure consistent collection and reporting across heterogeneous platforms.
  3. Define standard APIs to ensure pervasive support in heterogeneous environments.
  4. Metrics are chosen so as to meet the following goals: low variability, nonredundacy, and completeness. Low variability helps to reduce the number of repetitions required to obtain a given level of statistical confidence.
  5. Wherever necessary and efficient, utilize self-describing data to ensure accessibility in heterogeneous environments.

REQT: Users/Uses of Performance Data

This section describes the users and uses of performance data to ensure that the metrics and architecture are satisfactory. The users and uses of performance data are summarized in the following list(s). (Though presented here in list format, this data can best be conceptualized as a table or matrix, with columns tagged with the five named user types and rows tagged with the the five named use types.)

The five major users of performance data are: (a) the platform vendor who provides the DCE infrastructure on a particular platform; (b) the third party/in-house application developer; (c) the cell system administrator; (d) the cell capacity planner; (e) the information technology decision maker. For each of these users we have summarized the major attributes of performance data: (i) the user function; (ii) estimated factors; (iii) measurable factors; (iv) actions that can be taken based on the data; (v) the degrees of freedom that the particular user has in using this data to improve the productivity of the computing environment.

  1. User: Platform Vendor.
    1. Use: User Function.
      1. Configuration planning.
      2. Infrastructure development.
    2. Use: Estimated Factors.
      1. Service center cost.
      2. Routing probability.
      3. Population size.
      4. Arrival rates.
      5. Transaction classes.
    3. Use: Measured Factors.
      1. Response time.
      2. Throughput.
      3. Utilization.
      4. Queueing.
    4. Use: Actions.
      1. Maximize throughput.
      2. Minimize response time.
    5. Use: Degrees of Freedom.
      1. High.
  2. User: Application Developer.
    1. Use: User Function.
      1. Application development.
    2. Use: Estimated Factors.
      1. Service center cost.
      2. Routing probability.
      3. Population size.
      4. Arrival rate.
      5. Transaction classes.
    3. Use: Measured Factors.
      1. Response time.
      2. Throughput.
      3. Utilization.
      4. Queueing.
    4. Use: Actions.
      1. Maximize throughput.
      2. Minimize response time.
    5. Use: Degrees of Freedom.
      1. Medium.
  3. User: System Administrator.
    1. Use: User Function.
      1. Tuning.
      2. Problem identification.
      3. Load balancing.
    2. Use: Estimated Factors.
      1. Service center cost.
      2. Routing probability.
    3. Use: Measured Factors.
      1. Throughput.
      2. Utilization.
      3. Response time.
      4. Population size.
      5. Arrival rate.
    4. Use: Actions.
      1. Impact of service center changes and application load.
      2. Impact of hardware changes.
    5. Use: Degrees of Freedom.
      1. Low.
  4. User: Capacity Planner.
    1. Use: User Function.
      1. System sizing.
      2. Growth.
      3. Requirements for future apps.
    2. Use: Estimated Factors.
      1. Population size.
      2. Service center cost.
      3. Routing probability.
      4. Transaction classes.
    3. Use: Measured Factors.
      1. Throughput.
      2. Utilization.
      3. Response time.
      4. Arrival rate.
    4. Use: Actions.
      1. Predict application resource consumption, hardware requirements.
    5. Use: Degrees of Freedom.
      1. Medium.
  5. User: IT Decision Maker.
    1. Use: User Function.
      1. New applications.
    2. Use: Estimated Factors.
      1. Population.
      2. Transaction classes.
    3. Use: Measured Factors.
      1. Maximum TPS.
      2. K$/TPS.
    4. Use: Actions.
      1. Authority for software and hardware purchase.
    5. Use: Degrees of Freedom.
      1. High.

REQT: Client and Server Perspective

Isolating performance problems in a distributed environment is much more difficult than in a centralized environment. It is important that the measurement system provide data from the client's perspective to approximate the end users perception of system performance. This provides insights into why a client's transaction or operation is not meeting performance expectations.

From the server's perspective requests appear as an incoming stream and replies signify completions (throughput). Monitoring from a server's perspective also provides node utilization.

Having information from both the client and server perspectives can also provide an indication about the performance of the interconnect.

REQT: User Defined Generic Server Performance Interfaces

To maximize the value of the measurement system it is required that application developers be provided with the capability to easily create generic performance management interfaces for application servers. Predefined performance metrics should be available by including the appropriate header file and custom, extensible application defined metrics should also be supported. These interfaces should be accessible from the standard measurement system and data for these application servers should be combined and displayed through the measurement system presentation services.

REQT: Collection Intensity Levels

Requirements for different data capture granularities and subsets requires that the maximum amount of data is collected with the minimum amount of overhead. Consequently, we have defined varying data collection intensity levels to provide increasing detail in the collected data.

Under the best scenario there should be no overhead incurred by the measurement system when there are no observations required. This can be approached practically if the design includes a zero intensity level.

Increasing the observation intensity level allows more detailed data to be collected which results in increasing complexity of metrics and collected data. In general, increasing intensity levels provide a superset of statistical data and metrics.

The following list specifies the five data collection intensity levels and their characteristics.

  1. Level 0.
    1. Description: Minimum overhead, no data needed.
    2. Statistics added per performance metric: None.
  2. Level 1.
    1. Description: Provides simple utilizations, usage counts, error counts, mean times, and mean rates for the critical subset of performance metrics.
    2. Statistics added per performance metric: Counts; simple sums.
  3. Level 2.
    1. Description: Includes Level 1 data plus provides 2nd and 3rd moments so that analysis can yield variances, skews, and other indicators for distributional behavior. Increases set of collected metrics.
    2. Statistics added per performance metric: Sum of squares; sum of cubes; minima; maxima.
  4. Level 3.
    1. Description: Includes Level 2 data plus provides direct measurement of the distributions of interesting metrics. Bin sizes are automatically generated (default 10) with an option for customizing.
    2. Statistics added per performance metric: Histograms.
  5. Level 4.
    1. Description: Includes Level 3 data plus provides event tracing (this is the highest overhead but the most descriptive). Data can be used for debugging, model building, simulation studies and extended statistical breakdown of operations.
    2. Statistics added per performance metric: Events in a time-ordered causal relationship.

Level 4 functions should be provided by hooking into the tracing services defined by the DCE serviceability group [Hubb].

REQT: Concurrent Measurement

Support concurrent requests of the measurement system with different configurations and sampling intervals.

REQT: Operational Behavior

Enable/disable this instrumentation on a running system without disrupting an active application environment.

Provide a closed feedback loop so that changes to system configuration parameters are reflected in the data collected by the measurement system.

REQT: Adherence to Standards

A performance measurement system, although not a system management service in and of itself, is an important aspect of any system management capability. Therefore, the measurement system should wherever possible:

  1. Converge with relevant ISO measurement standards [ISO].
  2. Be compatible with OSF/DME.

REQT: Resource Consumption

Provide configurable data collection overhead to minimize impact on system resources. Both the measurement interval and the granularity of the collected data should be configurable. The CPU overhead goals of the measurement system are listed below based on the amount of data that has been requested (specific memory, disk and network resource consumption goals have not been identified):

  1. <2% CPU utilization for continuous monitoring of a subset of instrumentation for monitoring normal operation.
  2. <5% CPU utilization for continuous monitoring of the core DCE service's instrumentation during normal node operation.
  3. <10% CPU utilization for continuous monitoring of all DCE server's instrumentation for detailed performance analysis during normal node operation.
  4. <20% CPU utilization for continuous tracing of all DCE server's events during normal node operation.

REQT: Security Interface

The measurement system should work within the framework of the DCE security system.

REQT: Validity

Establish a validation suite so that the integrity of the measurement system can be confirmed and maintained for each platform and release.

PERFORMANCE METRICS AND INSTRUMENTATION

This section describes and establishes a set of prioritized metrics that will guide the design and placement of performance instrumentation. Performance metrics are provided for a client perspective (end user) and for a server perspective.

This section also describes the statistics that the measurement system must produce.

Basic Performance Metrics


.ds bB \f3

.ds bE \f1

.ds lL \(*l

.ds kK \s-3\dk\u\s+3

.ds pK \s-3\u\zp\d\dk\u\s+3

The following metrics define the quantities and the notation that will be used throughout the remainder of the document. These metrics have been derived from [Lazo] and [Jain]. The notation is derived from [Lazo].

  1. T -- The length of time that observations (measurements) were made.
  2. A -- The number of request arrivals observed.
  3. C -- The number of request completions observed.
  4. \*(lL -- The arrival rate of requests: \*(lL = A/T. (The standard notation is the lower-case Greek letter lambda instead of L.)\}
  5. X -- The throughput of completions: X = C/T.
  6. B -- The length of time that a single resource was busy.
  7. U -- The utilization of a resource: U = B/T = X\(**S.
  8. S -- The average service requirement per request: S = B/C.
  9. N -- The average number of requests in the system: N = X\(**R.
  10. R -- The average system response/residence time per request.
  11. Z -- The average user think time.
  12. V\*(kK -- The average number of visits that a system level request makes to resource k.
  13. D\*(kK -- The service demand at resource k: D\*(kK = V\*(kK\(**S\*(kK = B\*(kK/C.
  14. Q\*(kK -- The average queue length at resource k.
  15. W\*(kK -- The average waiting time at resource k.
  16. W\*(pK -- The average packet waiting time between the first and last packet at resource k.

In general, a metric with an annotation of k is for a particular resource k. Non-annotated metrics are for the system as a whole. The above non-annotated metrics can also be defined for a particular resource. For example, \*(lL\*(kK is the arrival rate of requests at resource k.

General Client Performance Metrics

The following metrics should be collected or derived from a client perspective:

  1. Response time.
  2. Number of server request completions.
  3. Service demand.
  4. Think time.
  5. Number of active client requests in system (N).
  6. Length of measurement interval.

General Server Performance Metrics

The following metrics should be collected or derived from a server perspective:

  1. Number of arrivals.
  2. Arrival rates.
  3. Number of completions.
  4. Throughput.
  5. Service requirement.
  6. Residence time.
  7. Visit count.
  8. Queue time.
  9. Queue length.
  10. Utilization.
  11. Measures of locking contention.
  12. Length of measurement interval.

The typical server operation completes normally and that is the expected view when we collect performance information. Three categories of metrics are associated with the outcomes of a requested operation. These categories are termed speed, reliability, and availability. This RFC discusses only those metrics related to speed. The Management SIG might wish to pursue the reliability and availability categories.

Statistics to Collect

The instrumentation must provide analysis software with the data required to compute the following statistical quantities:

  1. Minimum.
  2. Maximum.
  3. Sum.
  4. Mean.
  5. Variance.
  6. 90th Percentile.
  7. Skew.
  8. Histogram.

These quantities are described in detail in [Alle] and [Jain].

RPC Performance Metrics and Instrumentation

The following sections describe the metrics for the RPC and CDS DCE services. It also provides some guidance to technology providers in how to interpret the metrics so that they can be accurately and consistently implemented. Specific instrumentation design guidelines can be found in [Frie].

For each DCE core service a prioritized list of performance metrics is provided. The metrics were developed and prioritized by the working group and are subject to change based on general DCE SIG comment. The DCE Performance SIG expects that all high priority items will be incorporated into the next available DCE release. Instrumentation for other DCE services, as well as medium and low priority metrics presented here, should be incorporated into a future release based on SIG input.

Specific RPC instrumentation requirements

Based on the above client and server views the following metrics should be collected for each client\*(f!

This implies that clients can be located by the measurement system. The current DCE technology does not provide a mechanism to locate clients -- only servers that register in the CDS.
thread and for each server RPC interface. The threads and interfaces must be uniquely identifiable.

For each metric the minimum, maximum, sum, mean, variance, 90th percentile, skew and histograms should be collected based on the collection intensity level.

High priority items

  1. Response Time per RPC call from the Client perspective.

    This measures the total elapsed time, including server processing time and delay/queueing, for a client routine that invokes a particular DCE server.

    Measure the elapsed time per RPC call from the time the client's runtime initiates the call until the last packet has been received and unmarshalled. This should include nested RPC call elapsed times if other DCE servers, such as the security service, must be invoked (the nested RPC call should optionally be broken out). Note that this time will not include client application or user interface response time since they are outside the scope of the DCE services.

    For a given sampling interval measure the Elapsed Time from the execution of rpc_call_start to the execution of rpc_call_end as measured in the client process.

  2. Response Time per RPC call from the Server perspective.

    This measures the total elapsed time, including server processing time and delay/queueing, required for the server to satisfy a client request.

    Measure the elapsed time per RPC call from the time the server runtime receives the call until the last packet has been marshalled and sent. This should include nested RPC call elapsed times if other DCE servers, such as the security service, must be invoked (the nested RPC call times should optionally be broken out).

    For a given sampling interval collect the mean elapsed time from the execution of rpc_call_start to the execution of rpc_call_end as measured in the server process.

  3. Service requirement at Server per client request for each unique client.

    This measures the service requirement at the server, including operating system and network software processing time, required to satisfy a client's request. This request may consist of multiple RPC packets but only one RPC call. This requires that the host operating system support a performance measurement system and that DCE servers use it to gather CPU service time.

  4. Server throughput.

    This measures the server's total throughput as determined by the number of successful completions of client requests per unit time.

  5. Visit count of the number of RPC calls initiated by the client for each unique client-server pair.

    This measures the frequency of client requests and should be available for each server RPC interface.

    For a given sampling interval:

    1. Number of times rpc_call_start is executed by the client (initiates an RPC call).
    2. Number of times rpc_call_end is executed by the client (client has received results).
    3. Number of secondary RPC calls, such as to the security server, necessary for the server to complete the requested task.
  6. Count of total packets sent and received by the client for each unique client-server pair.

    These two metrics measure the number of packets sent by the client and the number of packets received by the client.

    For connectionless RPC count the number of times rpc__dg_xmit_pkt is called by the client.

    For connection oriented RPC count the number of time rpc_cn_assoc_send_frag is called by the client.

  7. Count of total packets sent and received by the server.

    These two metrics measure the number of packets sent by the server and the number of packets received by the server for all clients.

    For connectionless RPC count the number of times rpc__dg_xmit_pkt is called by the server.

    For connection oriented RPC count the number of time rpc_cn_assoc_send_frag is called by the server.

  8. Number of bytes per RPC call sent from the client to the server for each unique client-server pair.

    This metric provides information about the size of the data transferred from the client to the server.

  9. Number of bytes per RPC call sent from the server to the client for each unique client-server pair.

    This metric provides information about the size of the data transferred from the server to the client.

  10. Count the number of RPC call errors and failures.

    This information, although not a performance metric, provides insight into the operational environment and whether error conditions may be causing performance problems.

    Medium priority items

    The following metrics were assigned medium priority and are briefly described.

    1. Amount of real and virtual memory allocated for each client application program executable, libraries, RPC run time library, heaps and application stubs.
    2. Amount of real and virtual memory allocated for each server application program executable, libraries, RPC run time library, heaps and application stubs.

    Low priority items

    The following metrics were assigned low priority and are briefly described.

    1. Number of RPC interfaces exported for servers.
    2. Number of RPC retransmissions.
    3. Number of clients active per RPC interface.
    4. Number of RPCs by authentication type.

    Example RPC client view

    In the following example we illustrate the use of these performance metrics. Relevant performance metrics are indicated at the bottom of the figure (client request arrival rate and response time; service demand on the server).

                    FIGURE 1. Client View of Performance
    
    +----------+ Request-A         +------------+
    | Client_A | ----------------> |            |
    |          | <---------------- |            |
    +----------+             Reply |            |
                                   |            |
                                   |  Server_C  |
                                   |            |
    +----------+ Request-B         |            | Request    +----------+
    | Client_B | ----------------> |            | ---------> | Remote   |
    |          | <---------------- |            | <--------- | Server_D |
    +----------+             Reply +------------+      Reply +----------+
    
    Metrics:
            Arrival Rate           Service Demand
            Response Time
    

    Two clients, Client_A and Client_B, issue RPC requests to a server, Server_C. From a client's perspective RPC requests are made to a specific server. After some amount of processing and queueing time the server replies to the request. The simple case involving one client and one server is shown as Request-A in Figure 1 where Client_A requests an operation of Server_C.

    The actual communication can be more complicated as shown for Request-B. In this example Client_B makes a request of Server_C who in turn must initiate a client request to a remote Server_D in order to complete Request-B. Note that from the client's perspective there is no change in the performance metrics but the measurement system must be able to include the processing and queueing time of the remote server in the total processing and queuing time for Request-B. The measurement system is further complicated if Server_C is multi-threaded because two different threads may process the initial request from Client_B and the completion from Server_D.

    The following table provides an example performance report from the client's view. The performance measurement system should be able to provide this summary. The detailed description of each metric is in section 5.5.1.

          TABLE 1. Sample Performance Output -- Client View
    
    +---------------------------+----------------+---------------+
    | Metric                    |      Client_A  |      Client_B |
    +===========================+================+===============+
    | RPC Calls/sec             |                |               |
    |   Ave                     |          35.4  |          12.6 |
    |   Std Dev                 |          14.2  |           7.5 |
    +---------------------------+----------------+---------------+
    | RPC Response Time (msec)  |                |               |
    |   Min / Max               |   2.5 / 175.3  |   2.4 / 256.3 |
    |   Ave / Std Dev           |  14.5 /  22.8  |  22.5 /  28.6 |
    +---------------------------+----------------+---------------+
    | Packets/sec               |                |               |
    |   Sent                    |          23.0  |          78.0 |
    |   Received                |          45.0  |          12.0 |
    +---------------------------+----------------+---------------+
    | KBytes/sec                |                |               |
    |   Sent                    |           2.5  |          15.0 |
    |   Received                |          35.0  |          10.0 |
    +---------------------------+----------------+---------------+
    
    \fBTABLE 1. Sample Performance Output \*(EM Client View\fR
    tab(@) center box;
    lb | rb | rb
    l | r | r.
    Metric@Client_A@Client_B
    =
    RPC Calls/sec@@
    Ave@35.4@12.6
    Std Dev@14.2@\07.5
    _
    RPC Response Time (msec)@@
    Min / Max@ 02.5 / 175.3@\02.4 / 256.3
    Ave / Std Dev@14.5 / \022.8@22.5 / \028.6
    _
    Packets/sec@@
    Sent@23.0@78.0
    Received@45.0@12.0
    _
    KBytes/sec@@
    Sent@\02.5@15.0
    Received@35.0@10.0

    Example RPC server view

    From a server's perspective an incoming stream of RPC requests from a pool of clients must be processed. After some amount of queueing and processing time the server completes the processing and replies to the request. This is shown in Figure 2 as a server with an input queue. The actual communication situation can become more complicated if the requested server must initiate a client request to a remote server in order to complete the incoming request. The measurement system must be able to include the processing and queueing time of the remote server in the total processing and queuing time of the original incoming request. Again, the relevant performance metrics are indicated at the bottom of the figure (message arrival rate and interarrival time; length of queue; number of servers, residence time and utilization).

                    FIGURE 2. Server View of Performance
    
    +----------+                                                    Reply
    |          | <------------------------------------------------------+
    |          |                                    +------------+      |
    |          |                      Queue        /|           /|      |
    |  Client  |                  ---------+       +------------+|      |
    |  Pool    | Request               | | |       ||    RPC    ||      |
    |          | ----------------->    | | | ----> || Server(s) || -----+
    |          |                       | | |       |+-----------|+
    |          |                  ---------+       |/           |/
    +----------+                                   +------------+
    
    Metrics:
            Arrival Rate          Queue Length     Number of Servers
            Interarrival Time                      Residence Time
                                                   Utilization of Servers
    

    The following table provides an example performance report from the server's view. The performance measurement system should be able to provide this summary. The detailed description of each metric is in section 5.5.1.

          TABLE 2. Sample Performance Output -- Server View
    
    +---------------------------+----------------+---------------+
    | Metric                    |      Server_C  |      Server_D |
    +===========================+================+===============+
    | Arrival Rate              |                |               |
    |   Ave                     |          48.0  |           8.6 |
    |   Std Dev                 |          10.6  |           2.5 |
    +---------------------------+----------------+---------------+
    | Throughput                |          48.0  |           8.6 |
    +---------------------------+----------------+---------------+
    | Residence Time (sec)      |                |               |
    |   Min / Max               |   1.5 / 246.3  |   1.5 / 350.3 |
    |   Ave / Std Dev           |   8.5 /  18.8  |  12.5 /  24.8 |
    +---------------------------+----------------+---------------+
    | Utilization (%)           |          78.0  |          35.0 |
    +---------------------------+----------------+---------------+
    | Queue Length              |           1.4  |           0.5 |
    +---------------------------+----------------+---------------+
    | Packets/sec               |                |               |
    |   Sent                    |          57.0  |          22.0 |
    |   Received                |         101.0  |          45.0 |
    +---------------------------+----------------+---------------+
    | KBytes/sec                |                |               |
    |   Sent                    |          45.0  |           8.0 |
    |   Received                |          17.5  |           5.0 |
    +---------------------------+----------------+---------------+
    
    \fBTABLE 2. Sample Performance Output \*(EM Server View\fR
    tab(@) center box;
    lb | rb | rb
    l | r | r.
    Metric@Server_C@Server_D
    =
    Arrival Rate@@
    Ave@48.0@8.6
    Std Dev@10.6@2.5
    _
    Throughput@48.0@8.6
    _
    Residence Time (sec)@@
    Min / Max@1.5 / 246.3@\01.5 / 350.3
    Ave / Std Dev@8.5 / \018.8@12.5 / \024.8
    _
    Utilization (%)@78.0@35.0
    _
    Queue Length@1.4@0.5
    _
    Packets/sec@@
    Sent@57.0@22.0
    Received@101.0@45.0
    _
    KBytes/sec@@
    Sent@45.0@8.0
    Received@17.5@5.0

    CDS Performance Metrics and Instrumentation

    The following sections describe the metrics for the CDS services. It also provides some guidance to technology providers in how to interpret the metrics so that they can be accurately and consistently implemented. Specific instrumentation design guidelines can be found in [Frie].

    Specific CDS client/clerk performance instrumentation

    The CDS performance metrics have been subdivided into client (clerk) and server (cdsd) metrics. This section describes client metrics and the next section describes server metrics.

    The following are collected for each CDS client (cdsclerk\*(f!). Each

    The cdsclerk is a transitory process that will terminate after a specified interval of time. This will present challenges for instrumentation initialization and storage.
    client must be uniquely identifiable.

    For each metric the minimum, maximum, sum, mean, variance, 90th percentile, skew and histograms should be collected based on the collection intensity level.

    High priority items

    For a given sampling interval:

    1. Count the number of Cache Hits in the CDS Clerk Cache.

      The CDS architecture tries to provide a cache as close to the client as possible. This metric, when combined with the next, provides a means for assessing the efficiency of the CDS caching mechanism.

      It appears that the counter DNS_CLERK_CACHE_HITS_COUNT in routine CAADSVCR collects this metric. If so, all that is required is to hook this up to the standardized collection mechanism.

    2. Count the number of Cache Misses in the CDS Clerk Cache.

      The CDS architecture tries to provide a cache as close to the client as possible. This metric, when combined with the previous, provides a means for assessing the efficiency of the CDS caching mechanism.

      It appears that the counter DNS_CLERK_CACHE_BYPASS_COUNT in routine CAADSVCR collects this metric. If so, all that is required is to hook this up to the standardized collection mechanism.

    3. Count the number of read cache operations in the CDS Clerk Cache.

      This metric, when combined with the next, provides a means for assessing the workload demand on the CDS caching mechanism.

      It appears that the counter DNS_CLERK_READ_OPS_COUNT in routine CAADSVCR collects this metric. If so, all that is required is to hook this up to the standardized collection mechanism.

    4. Count the number of write cache operations in the CDS Clerk Cache.

      This metric, when combined with the previous, provides a means for assessing the workload demand on the CDS caching mechanism.

      It appears that the counter DNS_CLERK_WRITE_OPS_COUNT in routine CAADSVCR collects this metric. If so, all that is required is to hook this up to the standardized collection mechanism.

    5. Count the number of requests to the CDS clerk.

      Summarize total CDS request demand by summing the following:

      1. DNS_CLERK_READ_OPS_COUNT.
      2. DNS_CLERK_WRITE_OPS_COUNT.
      3. DNS_CLERK_MISC_OPS_COUNT.
    6. Count the number of \*(Brequests forwarded to the Global Directory Service.

      This metric counts the number of requests that are not local to the cell and hence may experience significant delays due to inter-cell communication.

      Medium priority items

      The following metrics were assigned medium priority and are briefly described.

      1. Count of times request satisfied by a non-local clerk.

        This metric counts the number of requests that are not satisfied by the local cdsclerk and hence may experience additional delays.

      2. The age of an entry that is replaced in the cdsclerk cache.

        This metric describes the length of time that an entry resides in the cache and can provide insight into cache efficiency.

      Low priority items

      The following metrics were assigned low priority and are briefly described.

      1. The cdsclerk cache size in kilobytes.
      2. The cdsclerk cache size as a percent of main memory.
      3. Count of cache locked, cannot obtain lock events.
      4. Count of cdsclerk and cdsadvertiser errors and failures.

      Specific CDS server instrumentation

      The following metrics are collected per CDS server (clearinghouse) for a given sampling interval. Each server must be uniquely identifiable.

      Unless otherwise stated all CDS server metrics are measured from the RPC NSI interface level and not the CDSPI level.

      For each metric the minimum, maximum, sum, mean, variance, 90th percentile, skew and histograms should be collected based on the collection intensity level.

      High priority items

      1. Service requirement per client request from the Server perspective for each unique client.

        This measures the service requirement, including operating system and network software processing time, required to satisfy a client's request of a particular CDS server. This request may consist of multiple RPC packets but only one RPC NSI call. This requires that the host operating system support a performance measurement system and that DCE servers use it to gather CPU service time.

      2. Server throughput.

        This measures the CDS server's total throughput as determined by the number of successful completions of all client requests.

      3. Response time for read requests to the CDS server.

        This metric describes the service time of the CDS server for RPC binding handle imports or XDS read attributes requests.

      4. Response time for write/modify requests to the CDS server.

        This metric describes the service time of the CDS server for RPC binding handle exports or XDS modify attributes requests.

      5. Number of read requests to the CDS server.

        This metric describes the workload demand placed on the CDS server for RPC binding handle imports or XDS read attributes requests.

      6. Number of write/modify requests to the CDS server.

        This metric describes the workload demand placed on the CDS server for RPC binding handle exports or XDS modify attributes requests.

        Medium priority items

        1. Count of number of disk I/Os issued by the cdsd logging facility.

          This metric describes the number of disk writes that the CDS server performs during a modify attribute request to maintain physical consistency of the name space. A calling process blocks until the I/O completes.

        2. Amount of data logged by the cdsd logging facility.

          This metric describes the amount of data written to disk when the CDS server performs a logging I/O.

        3. Count of number of checkpoints.

          This metric describes the number of checkpoints that the CDS server performs during its normal operation.

        4. Count of number of skulks.

          This metric describes the number of skulks that the CDS server performs during its normal operation.

        Low priority items

        1. Count of directory reads by type (object, attribute, etc.).
        2. Count of directory writes by type (object, attribute, etc.).
        3. Count of directory entries added.
        4. Count of directory entries deleted.

        Generic Server Performance Interface for Application Server Developers

        Application developers who create DCE-based servers need consistent and integrated performance instrumentation. This custom performance instrumentation should be controlled, collected, and presented similar to and in conjunction with the DCE core services.

        A mechanism to create a generic server performance interface (GSPI) for a server needs to be provided by DCE. This server interface should be accessible by the performance measurement monitor. This mechanism needs to provide the following metrics for the server as a whole and for each server interface:

        1. Response time.
        2. Throughput rates.
        3. Service requirement.
        4. Visit ratio.
        5. Queue time.
        6. Queue length.
        7. Utilization (of server).
        8. Counts of server specific events.
        9. Number of unique clients accessing the server.
        10. Server name and node location.

        This performance interface should be easy to compile into a DCE server and customizable if necessary.

        Furthermore, this instrumentation should be designed around a framework in which the set of observable metrics is at a minimum statically extensible (compile time) and preferably dynamically loadable. It is important that more metrics can be added to the initial set and that the data gathered by them can be fed into higher level collection and analysis tools without having to rewrite those tools. This can be done in several ways but any extensible scheme probably requires that the metrics are named (ideally with globally unique names and probably assigned a UUID) and associated with a self-describing data structure. This information would not be transmitted with actual data samples but would be used by the data collectors and analyzers to interpret the data and possibly exercise control. Metrics should probably be grouped into families, for example RPC metrics or CPU metrics, and described at that level rather than individually.

        The instrumentation framework needs to provide a standardized metric description language (perhaps IDL although it may not be a very good match). It would be nice to support the following concepts as part of the description language:

        1. Counters (unidirectional, up/down, re-settable (or not)).
        2. Statistic vector.
        3. Histograms.
        4. Periodic timers.

        This makes adding new metrics easier and limits the variation which is likely to occur if application developers work with lower level primitives.

        Although each metric family could be its own RPC process and register its own interface it is preferable to have a single data collection process (daemon) on each measured system that gathers the data and presents it through a common interface. This would limit the proliferation of RPC interfaces and improve manageability of the instrumentation system. It would need to support methods for registering, activating, and listing the state of available metrics on an individual system. If the metrics themselves are well-described then it is relatively simple to develop either a DCE-specific collector or to interface to existing monitoring packages.

        Transaction Flow Tracing through Network Resources

        More sophisticated performance diagnosis and modeling requires that the resources consumed by a particular transaction (or application) be traceable as various network resources are invoked. The result of this instrumentation is that it should provide a dynamic call graph of all services invoked and the callee of those services. Also, for each call the corresponding service time should be collected.

        For example, invoking a server interface may require that the server become a client and invoke other servers. This instrumentation provides tracing of the parent call and all subsequent cascading calls.

        Standard OS Performance Metrics Interface

        To maximize the information and effectiveness of presenting performance data for distributed applications it is necessary to integrate critical non-DCE performance data into a cell presentation screen. This non-DCE performance data includes node CPU utilization, disk I/O activity and network activity.

        Specifically, each DCE-host operating system should optionally\*(f!

        If a platform vendor does not support this standard interface then the performance presentation screens should report the data as Unavailable.
        provide a standard interface for the following node-wide metrics:

        1. CPU utilization (system + user).
        2. File Disk I/Os per second.
        3. Paging I/Os per second.
        4. Network I/Os per second.

        This interface is described in [Frie].

        It can be argued that this interface is an unnecessary requirement and should be left to third party suppliers. This overlooks two problems. First, critical performance metrics can only be captured by the host operating system. Second, third party tools, if not available for every node in a heterogeneous environment are of limited use to a cell administrator. Consequently, it is imperative to integrate performance data from various sources into a seamless whole to make performance management possible in a distributed environment.

        PERFORMANCE MEASUREMENT SYSTEM ARCHITECTURE

        This section provides an overview of a performance measurement architecture to support efficient collection of the required performance instrumentation. Complete details are in [Frie]. We will also briefly describe several potential data collection mechanisms.

        Measurement Architecture

        Monitoring a distributed system is more difficult than monitoring a centralized system. The data is distributed and must be assembled from various disparate locations before analysis can start.

        A modular approach is necessary to design a monitoring system that is flexible, generalized and efficient in implementation. This section describes our proposed approach. Significant parts of this section have been derived from [Jain] and [Ferr].

        The layers of the distributed system monitor are shown in the following figure and briefly described below. Note that our proposed architecture is focused on both DCE core services and custom designed servers developed by application writers.

           FIGURE 3. Layers in a Distributed Performance Monitoring System
        
        +-----------------+
        | Observation     |      -- DCE Server
        +-----------------+
                 |
        +-----------------+
        | Collection      |
        +-----------------+
                 |
        +-----------------+
        | Analysis        |
        +-----------------+
                 |
        +-----------------+
        | Presentation    |
        +-----------------+
                 |
        +-----------------+ \e
        | Interpretation  |  \e
        +-----------------+   \e
                 |             \e
        +-----------------+      Can also be automated but often done by
        | Console/Control |      humans.  Can also be integrated with a
        +-----------------+      larger distributed management scheme.
                 |             /
        +-----------------+   /
        | Management      |  /
        +-----------------+ /
        

        1. Observation: This layer gathers raw data on individual components of the system. Generally, each component may have an observer designed specifically for it. Thus there may be several observers located on different subsystems.
        2. Collection: This layer collects data from various observers. It is possible to have more than one collector on large systems. Collectors may coordinate the activities of observers across the network and sometimes be responsible for store and forward activities for collectors situated on other nodes.
        3. Analysis: This layer analyzes the data gathered at various collectors. It may consist of various statistical routines to summarize the data characteristics. Simple analysis such as counting of events is done most efficiently in the observer but more complex statistical calculations are performed here.
        4. Presentation: This component of the monitor deals with human user interface. It produces reports, displays, and alarms. The presentation layer may be integrated within another tool that may manage some part of the system.
        5. Interpretation: This component refers to the an intelligent entity (human or expert system) that can make meaningful interpretations of the data. This generally requires multiple rules and trend analyses. Simple threshold-based alarms may be considered part of the presenter rather than of the interpreter which usually requires the application of more sophisticated rules.
        6. Console/Control: This component provides an interface to control the system parameters and states. Strictly speaking console/control is not a part of the monitor. However, the monitoring and control functions are often used together and it is desirable to allow system control as well as system observations facilities to be used together.
        7. Management: The entity that makes the decision to set or change system parameters or configurations based on interpretation of monitored performance is called the manager. A software manager component exists only in monitors with automated monitoring and control facilities.

        A monitor may consist of multiple components from each of the layers listed above. There is a many-to-many relationship between successive layers. A single collector may gather data from multiple observers. Many analysis layers may use data gathered by a single collector. Several collectors may be acting with a single observer, etc.

        Thus another view of these layers that may exist for a simple distributed system are shown in the following figure. As indicated by the figure, the interaction among layers in the measurement architecture is flexible. Multiple collectors can communicate with a single or multiple observers. Also, the analysis, presentation and higher levels of the architecture can be distributed throughout the cell.

                   FIGURE 4. DCE Measurement System Architecture
        
        +---------------+    +-----------+    +-----------+    +-----------+
        | DCE SUBSYSTEM |    | STUB CODE |    | STUB CODE |    | SUBSYSTEM |
        +---------------+    +-----------+    +-----------+    +-----------+
                 \e          /            \e               \e           /
          +-----------------+    +-----------------+    +-----------------+
          | Observation     |    | Observation     |    | Observation     |
          +-----------------+    +-----------------+    +-----------------+
                         \e          /                            |
                     +-----------------+                +-----------------+
                     | Collection      |                | Collection      |
                     +-----------------+                +-----------------+
                         /          \e                            |
          +-----------------+    +-----------------+    +-----------------+
          | Analysis        |    | Analysis        |    | Analysis        |
          +-----------------+    +-----------------+    +-----------------+
                   |                      |                      |
          +-----------------+    +-----------------+    +-----------------+
          | Presentation    |    | Presentation    |    | Presentation    |
          +-----------------+    +-----------------+    +-----------------+
                                          |                      |
                                 +-----------------+    +-----------------+
                                 | Interpretation  |    | Interpretation  |
                                 +-----------------+    +-----------------+
                                          |                      |
                                 +-----------------+    +-----------------+
                                 | Console/Control |    | Console/Control |
                                 +-----------------+    +-----------------+
                                          |                      |
                                 +-----------------+    +-----------------+
                                 | Management      |    | Management      |
                                 +-----------------+    +-----------------+
        

        Measurement Collection Mechanisms

        We have identified three instrumentation implementation strategies. The first is to instrument the RPC run time libraries. Second, the automatic IDL definition of performance interfaces for each server in a cell. Third, the performance interfaces to the internal DCE services (such as CDS, DFS, etc.). These are described in detail in [Frie].

        ACKNOWLEDGEMENTS

        This document is the result of many individuals from the DCE Performance SIG who contributed their time and expertise. Principal among these are the individuals listed below.

        Judi Bank (IBM), Peter Bates (Bellcore), Sarr Blumson (CITI at University of Michigan), Don Bolinger (OSF), Art Gaylord (Project Pilgrim at University of Massachusetts), Russ Heinselman (DEC), Bruce Keith (DEC), Joe Martinka (HP), Peter Oleinick (Transarc), Jerome Rolia (Carleton University), Chuck Royalty (Boeing), Barry Searle (IBM), Tracy Sienknecht (HP), Jim Van Sciver (OSF).

        CURRENT INSTRUMENTATION IN THE DCE SERVICES

        Current instrumentation in the RPC and CDS services is described below. The list may not be complete. It should be noted that the current instrumentation was deemed unsatisfactory because it was incomplete and inconsistent. Some of it, however, may be leveraged into the recommended measurement system.

        RPC

        This section briefly documents the existing instrumentation that we have found in the DCE 1.0 release of RPC.

        The DCE Application Development Reference manual intro(3rpc) page describes the statistics vector data structure. The RPC runtime maintains statistics on a per address space basis.

        The following metrics are collected:

        1. rpc_c_stats_calls_in -- The number of RPCs received by runtime.
        2. rpc_c_stats_calls_out -- The number of RPCs initiated by runtime.
        3. rpc_c_stats_pkts_in -- The number of network packets received by the runtime.
        4. rpc_c_stats_pkts_out -- The number of network packets sent by the runtime.

        These values can be obtained by using the rpc_mgmt_inq_stats routine.

        The data structure and additional information can be found in the Application Reference Guide.

        Additionally, we found a set of undocumented logging utilities by examining the RPC 1.0 source.

        In the RPC runtime library source the files rpclog.h and rpclog.c contain reference to an ULTRIX only logging function implemented by way of macros. One of the more interesting ones is the TIMESTAMP(code) macro (where the code is one of 256 possibilities delineated in the rpclog.h). This debugging trace capability could have some performance usage.

        A cursory investigation revealed that these macros write to a single location in main memory and that specialized hardware is used to store the data to another machine for processing. It also appears that this special hardware works only on Ultrix/VAX and not Ultrix/MIPs. Also, this instrumentation has been done only for the connection RPC. It appears that this mechanism would only be useful on machines with custom built hardware monitors (something that is not likely to be pervasive across DCE platforms).

        CDS

        The following counters are kept by routine clerk_counter, which updates the counts. They are available through the show_clerk command, which can be invoked via an RPC call. The counters are also written to the client caches.

        1. Clerk counters:
          1. DNS_CLERK_PROTOCOL_ERROR_COUNT.
          2. DNS_CLERK_AUTHENTICATION_COUNT.
          3. DNS_CLERK_READ_OPS_COUNT.
          4. DNS_CLERK_CACHE_HITS_COUNTs.
          5. DNS_CLERK_CACHE_BYPASS_COUNT.
          6. DNS_CLERK_WRITE_OPS_COUNT.
          7. DNS_CLERK_MISC_OPS_COUNT.
        2. Remote clearinghouse counters:
          1. REMOTE_CH_READ_OPS_COUNT.
          2. REMOTE_CH_WRITE_OPS_COUNT.

        adver_service_rpc.c counts the number of clearinghouses in the cache (results accumulated in variable clh_count).

        CDS also keeps information on the cache size. The size is initialized by routine casys.c. If the size is explicitly specified, and is less than the storage configured, the specification is used. Otherwise, it is set to 0.5% of physical memory.

        REFERENCES

        [Alle]
        Arnold Allen, Probability, Statistics, and Queueing Theory -- With Computer Science Applications, Academic Press, Inc., Orlando, FL, 1978.
        [Frie]
        Richard Friedrich, DCE Performance Measurement Architecture and Design Guidelines, OSF DCE-RFC 33.0, to be published.
        [Ferr]
        Domenico Ferrari, et al, Measurement and Tuning of Computer Systems, Prentice-Hall, Inc., Englewood Cliffs, N.J., 1983.
        [Hubb]
        Mark Hubbard, DCE SIG Serviceability Requirements Document, OSF DCE-RFC 11.0, August 1992.
        [ISO]
        ISO/IEC JTC, Performance Management Working Document -- Seventh Draft, Arles, May 1991.
        [Jain]
        Raj Jain, The Art of Computer Systems Performance Analysis -- Techniques for Experimental Design, Measurement, Simulation, and Modeling, John Wiley & Sons, Inc., New York, 1991.
        [Lazo]
        Edward Lazowska, et al, Quantitative System Performance, Prentice Hall, Inc., Englewood Cliffs, NJ, 1984.
        [Sear]
        Barry Searle, DME/DCE Managed Objects Requirements Document, OSF DCE-RFC 38.0, April 1993.
        [UI]
        Unix International -- Performance Management Working Group, Requirements for a Performance Measurement Data Pool, Revision 2.3, May 1993.

        AUTHOR'S ADDRESS

        Rich Friedrich Internet email: richf@nsa.hp.com
        Hewlett-Packard Company Telephone: +1-408-447-2425
        19410 Homestead Road
        Mailstop 43UA
        Cuptertino, CA 95014
        USA