CONTENTS Title Page Copyright Page Preface 1 Introduction 1.1 Overview 1.2 The Collector 1.3 The Analyzer 1.4 Getting Started 1.4.1 Using the Collector 1.4.1.1 Invoking the Collector 1.4.1.2 Collecting the Data 1.4.1.3 Exiting the Collector 1.4.2 Using the Analyzer 1.4.2.1 Invoking the Analyzer 1.4.2.2 Creating the Default Plot 1.4.2.3 Scrolling Through the Display on Your Terminal 1.4.2.4 Interpreting the Summary Page 1.4.2.5 Viewing the Currently Active Plot 1.4.2.6 Printing, Filing and Appending Analyzer Output 1.4.2.7 Stopping Terminal Output or Exiting the Analyzer Session 2 Using the Collector 2.1 Overview 2.2 Invoking the Collector 2.3 Specifying the Performance Data File 2.4 Specifying Data Collection 2.4.1 Program Counter Sampling Data - System Time 2.4.1.1 PC Sampling Data Distortion 2.4.1.2 Interpreting System Service Wait Times 2.4.1.3 Interpreting I/O Services Wait Times 2.4.1.4 Interpreting Page-Faulting Data 2.4.1.5 Collecting PC Sampling Data and Other Data in the Same Run 2.4.2 Program Counter Sampling Data - CPU Time 2.4.3 Test Coverage Data 2.4.3.1 Codepaths 2.4.3.2 Modules 2.4.3.3 Routines 2.4.3.4 Lines 2.4.3.5 Path-Name Qualification 2.4.3.6 Collecting Coverage Data from Multiple Test Runs 2.4.3.7 Gathering Test Coverage Without Optimization 2.4.4 Execution Count Data 2.4.5 Page Fault Data 2.4.6 System Services Data 2.4.7 Input/Output Data 2.4.8 Tasking Data 2.4.9 Events Data 2.4.10 Collecting Vector Instruction Data 2.4.10.1 Vector Program Counter Sampling Data 2.4.10.2 Vector CPU Time Data 2.4.10.3 Vector Instruction Execution Count Data 2.4.11 Collecting PC Values from the VAX Call Stack 2.4.11.1 Collecting Stack PCs by Data Kind 2.5 Selecting the Language of Your Application 2.6 Naming the Collection Run 2.7 Starting and Terminating Data Collection 2.8 Using Collector Command Procedures 2.9 Using Collector Logical Names 2.10 Gathering Shareable Image Data 3 Using the Analyzer 3.1 Overview 3.2 Invoking the Analyzer 3.3 Generating Histograms and Tables 3.3.1 Specifying the Kind of Data to Tally in the Histogram or Table 3.3.2 Partitioning Histograms into Buckets 3.3.2.1 Filtering Performance Data 3.3.2.2 Specifying Modules and Routines 3.3.2.3 Specifying Individual Buckets 3.3.2.4 Specifying a Set of Buckets 3.3.2.5 Specifying Lines 3.3.2.6 Specifying Codepaths 3.3.2.7 Specifying Bytes 3.3.2.8 Omitting Node Specifications 3.3.3 Using Nonaddress Domains 3.3.3.1 File Name Domain 3.3.3.2 File Key Domain 3.3.3.3 File Virtual Block Number Domain 3.3.3.4 I/O System Services Domain 3.3.3.5 Physical Read Count Domain 3.3.3.6 Physical Write Count Domain 3.3.3.7 Total Physical I/O Count Domain 3.3.3.8 Record Size Domain 3.3.3.9 System Services Domain 3.3.3.10 Task Domains 3.3.3.11 Time Domain 3.3.4 Sorting the Histogram or Table 3.3.5 Omitting Buckets of Certain Values 3.3.6 Showing Source Code in BY LINE and BY CODEPATH Histograms and Tables 3.3.7 Using CALL_TREE Node Specifications 3.3.8 Specifying Which Program Counter Values to Tally 3.3.8.1 Performing Call Stack Analysis 3.3.8.2 Defining the Program Unit as the Main Image 3.3.8.3 Performing Specific Call Stack Analysis 3.3.8.4 Tallying Program Counter Values 3.3.8.5 Using Program Address Selection Qualifiers 3.3.9 Filling and Scaling the Histogram 3.3.9.1 Defining the Character String for a Histogram Bar 3.3.9.2 Setting the Range for the Histogram Bar 3.3.10 Performing Multitasking Analysis 3.3.11 Interpreting TABULATE Confidence Intervals 3.4 Creating a Multiple Data-Kind Plot 3.4.1 Merging PCA Performance and Software Performance Monitor (SPM) Files 3.5 Listing the Raw Performance Data 3.6 Using Acceptable Noncoverage (ANC) 3.7 Editing Source Code from Within the Analyzer 3.8 Using Initialization Files and Command Procedures 3.8.1 Using Analyzer Logical Names 4 Productivity Enhancements with PCA 4.1 Example 1: Reducing Execution Time 4.2 Example 2: Analyzing Call Stack Data 4.3 Example 3: Using Multiple Data Kinds 4.4 Example 4: Using Event Markers for Selective Analysis 4.5 Determining Acceptable Noncoverage (ANC) 4.6 Example 6: Measuring Ada Tasking Data 4.7 Using PCA in Screen Mode 4.7.1 Concepts and Terms 4.7.2 Defining Windows 4.7.3 Screen Displays 4.7.3.1 Default Displays 4.7.3.2 User-Defined Displays 4.7.3.3 Pseudo-Display Names 4.7.4 Selecting Displays for Output or Scrolling 4.7.4.1 Viewing Displays with TYPE and SEARCH Commands 4.7.4.2 Setting the Directory Search List 4.7.5 Manipulating Displays 4.7.6 Saving and Extracting Displays 4.7.7 Keypad Key Functions 4.7.8 Defining Keys 5 Using PCA with DECwindows 5.1 Obtaining Online Help 5.2 Invoking and Using the Collector 5.2.1 Opening the Data File 5.2.2 Collecting Performance Data 5.2.2.1 Collecting PC Sampling Data 5.2.2.2 Collecting Coverage Data 5.2.3 Starting the Collection Run 5.2.4 Exiting the Collector 5.3 Invoking the Analyzer 5.3.1 Opening a Performance Data File 5.3.2 Specifying the View in the Analyzer 5.3.3 Obtaining a Source Code View 5.3.4 Using Pop-Up Menus 5.3.5 Specifying the Entries in Your View 5.3.6 Filtering Performance Data 5.3.7 Exiting the Analyzer 5.4 Notes on Using the PCA DECwindows Interface 6 Using VAX Vectors with PCA 6.1 Analyzing the Vector Instructions in Your Program-an Overview 6.2 Finding Where Your Application Uses Vector Processing 6.2.1 Collecting Concurrent Scalar and Vector Sampling 6.2.2 Gathering Scalar PC Sampling Within the Vector Instruction Emulator Only 6.3 Counting Vector Processor Instructions 6.4 Analyzing Vector Processor Data 6.4.1 Finding the Most-Used Vector Instructions 6.4.2 Finding the Locations of Vector Instructions 6.4.3 Finding if the Vector Processor Is Optimally Used 6.4.4 Finding How Well the Use of Vector Registers Is Distributed 6.4.5 Vectors Special Considerations Command Dictionary @file-spec APPEND ATTACH BACK CANCEL CANCEL ALL CANCEL ANC CANCEL COMMAND CANCEL COUNTERS CANCEL COVERAGE CANCEL CPU_SAMPLING CANCEL DATAFILE CANCEL DISPLAY CANCEL EVENT CANCEL FILTER CANCEL IO_SERVICES CANCEL LOG CANCEL PAGE_FAULTS CANCEL PC_SAMPLING CANCEL PLOT CANCEL SERVICES CANCEL SOURCE CANCEL STACK_PCS CANCEL TASKING CANCEL TITLE CANCEL VCOUNTERS CANCEL VCPU_SAMPLING CANCEL VERIFY CANCEL VPC_SAMPLING CANCEL WINDOW CURRENT DEFINE/COMMAND DEFINE/KEY DELETE/COMMAND DELETE/KEY DISPLAY EDIT EXCLUDE EXIT EXPAND EXTRACT FILE FIND FIRST GO HELP INCLUDE LIST MERGE MOVE NEXT PAGE PLOT PRINT SAVE SCROLL SEARCH SELECT SET SET ANC SET COMMAND SET COUNTERS SET COVERAGE SET CPU_SAMPLING SET DATAFILE SET DISPLAY SET EDITOR SET EVENT SET FILTER SET IO_SERVICES SET KEY SET LANGUAGE SET LOG SET MAX_SOURCE_FILES SET MODE SET NOTE SET PAGE_FAULTS SET PC_SAMPLING SET PLOT SET PROMPT SET RUN_NAME SET SEARCH SET SERVICES SET SOURCE SET STACK_PCS SET TASKING SET TERMINAL SET TITLE SET VCOUNTERS SET VCPU_SAMPLING SET VERIFY SET VPC_SAMPLING SET WINDOW SHOW SHOW ALL SHOW ANC SHOW COUNTERS SHOW COVERAGE SHOW CPU_SAMPLING SHOW DATAFILE SHOW DISPLAY SHOW EDITOR SHOW EVENT SHOW FILTER SHOW IO_SERVICES SHOW KEY SHOW LANGUAGE SHOW LOG SHOW MAX_SOURCE_FILES SHOW MODE SHOW NOTE SHOW PAGE_FAULTS SHOW PC_SAMPLING SHOW PLOT SHOW RUN_DESCRIPTION SHOW RUN_NAME SHOW SEARCH SHOW SELECT SHOW SERVICES SHOW SOURCE SHOW STACK_PCS SHOW SYMBOL SHOW TASKING SHOW TERMINAL SHOW TITLE SHOW VCOUNTERS SHOW VCPU_SAMPLING SHOW VERIFY SHOW VPC_SAMPLING SHOW WINDOW SPAWN TABULATE TYPE UNDEFINE/COMMAND UNDEFINE/KEY A Error Messages and Recovery Procedures B Sample Programs C PCA Reference Tables C.1 Collector Reference Tables C.2 Analyzer Reference Tables C.2.1 Analyzer Node Specification Summary C.3 Screen Displays D Questions and Answers EXAMPLES 1-1 Summary Page for a Single Data-Kind Plot 1-2 Summary Page for a Multiple Data-Kind Plot 3-1 Displaying PC Sampling Data in a Histogram 3-2 Displaying PC Sampling Data in Tabular Form 3-3 Node Specs Used to Focus on Program Elements 3-4 BY LINE Clause Output 3-5 Using /SOURCE with BY LINE 3-6 Showing Noncovered Codepaths 3-7 Indented Call Tree Plot 3-8 Comma List Form of a Call Tree Plot 3-9 Interpreting Confidence Intervals 3-10 Creating a Multiple Data-Kind Plot 3-11 Adding Data Kinds to Plots 3-12 Excluding Data Kinds from a Plot 6-1 Sample Output of PLOT/VCOUNTERS Command 6-2 Displaying Vector Register Usage 6-3 Displaying Register Usage for Individual Vector Instructions FIGURES 1-1 The PCA Model 2-1 The PCA Collector 2-2 A Program Represented as a Tree 3-1 A Program Represented as a Tree 3-2 The File Name Domain 3-3 The Record Size Domain 3-4 System Services Domain 5-1 PCA Collector Window 5-2 PC Sampling Dialog Box 5-3 Coverage Dialog Box 5-4 PCA Analyzer Window 5-5 Annotated Source Listing 5-6 Traverse Commands Pop-Up Menu 5-7 Operations Pop-Up Menu 5-8 Bucket Definition Sample 5-9 Filtering Performance Data C-1 Collector-Defined Keypad Key Functions C-2 Analyzer-Defined Keypad Key Functions C-3 PCA-Defined Keypad Key Functions for Screen Manipulation TABLES CD-1 Standard Key Names CD-2 Filter Restrictions on the SET FILTER Command C-1 RMS Services Measured by the Collector C-2 Non-RMS Services Measured by the Collector C-3 Node Specification Parameter Syntax C-4 Collector Logical Names C-5 Analyzer Logical Names C-6 Data-Kind Qualifiers and Supported Domains C-7 The SET Command with Corresponding Data-Kind Qualifiers C-8 Analyzer Node Specifications C-9 Filter Specification by Data Kind C-10 Default Key Bindings for Traverse Commands C-11 Analyzer Screen Mode Pseudo Display Names