JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Oracle Solaris Studio 12.2: Simple Performance Optimization Tool (SPOT) User's Guide
search filter icon
search icon

Document Information


1.  The Simple Performance Optimization Tool (SPOT)

2.  Running SPOT on Your Application

3.  Understanding SPOT Reports

Reports Produced by SPOT

Example Program

The spot_summary Report

The SPOT Run Report

Runtime System and Build Information

Processor Events

Analysis of Application Stall Behavior Section

Cache Statistics Section

Maximum Resources Used By The Process Section

Pairs of Top Four Stall Counters Section

Event Graph

Instruction Frequency Data

Bandwidth Data

Traps Data

Application HW Counter Profile Output

Application Profile Output

Source Code Page

Disassembly Page

Caller-Callee Page

The spot_diff Report

Summary of Key Experiment Metrics Table

Summary of Top Stalls Tables

Bit Instruction Counts Table

Flags Table

Traps Table

Time Spent in Top Functions Tables

Notes on the SPOT Reports


Example Program

The following test example program was run with SPOT to generate the reports discussed in this chapter. The program has three routines, each of which targets a different kind of event:

#include <stdio.h>
#include <stdlib.h>

void fp_routine(double *out, double *in1, *double *in2, int n)
  for (int i=0; i<n; i++) (out[i]=in1[i]+in2[i];)

int** cache_miss(int **array, int size, int step)
  for (int i=0; i<size-step; i++){array[i]=(int*)&array[i+step];}
  for (int i=size-step; i<size; i++)

  int ** cp=(int**)array[0];
  for (int i=0; i<size*16; i++) {cp= (int**)*cp;}

int** tlb_miss(int **array, int size, int step)
  for (int i=0; i<size-step; i++){array[i]=(int*)&array[i+step];}
  for (int i=size-step' i<size' i++)

  int ** cp=(int**)array[0];
  for (int i=0; i<size*16; i++) {cp= (int**)*cp;}
  return cp;

void main()
  double * out, *in1, *in2;
  int **array;

  out=(double*) calloc(sizeof(double),10*1024*1024);
  in1=(double*) calloc(sizeof(double),10*1024*1024);
  in2=(double*) calloc(sizeof(double),10*1024*1024);
  for (int rpt=0; rpt <100; rpt++)

  free (array);

The program was compiled with the Oracle Solaris Studio 12.2 c compiler:

cc -g -O -o test test.c