HP Caliper User's Guide
11 Producing a Sampled Call Stack Profile Analysis
HP Caliper can produce a sampled call stack profile report (using the cstack
measurement) from any compiled program. You do not need to compile your program
in any special way to use this feature. HP Caliper periodically samples the application
program counter and each of its thread's call stacks and then creates a call stack profile
of the program's execution.
For more information about the report produced by the cstack measurement, see
“cstack Measurement Report Description” (page 240).
Running HP Caliper to Produce a Call Stack Profile
You can start HP Caliper from the command line, a shell script, or your program's
makefile to produce a call stack profile. The syntax is:
caliper cstack [caliper_options] program [program_arguments]
For example, the following command creates a call stack profile report in the file named
results.save when profiling the program enh_thr_mutex1.
$ /opt/caliper/bin/caliper cstack -o results.save enh_thr_mutex1
You can use the --frame-depth option to change the maximum number of stack
frames to unwind while collecting call stack samples. The default value is 32. See
“--frame-depth” (page 81).
You can use the -s or --sampling-spec option to specify the sampling period. See
“-s or --sampling-spec” (page 69).
You can use the --group-by executable option to generate a per-executable call
stack profile report merged across processes. You can use the caliper merge
command to merge cstack data from multiple collection runs.
By default a cstack run collects the blocking primitives data, and a "Blocking
Primitives" section will appear in the cstack reports if there are any samples that are
blocked waiting for a thread primitive (mutex, condition variable, or rwlock)
or inter process blocking primitive (like semaphore, socket, pipe, or file
descriptor).
If an application is linked with libpthread version 11.31_BL2009_1012_2 (or later), the
"Blocking Primitive Details" section would appear instead in the cstack report with
information about holder and waiter threads for thread primitives (for example,
mutexes). See “Thread Synchronization Primitive's Holder and Waiter Thread Analysis
(HP-UX 11.31 only)” (page 191).
When HP Caliper is run as root, cstack measurement now records and reports both
user and kernel space portions of the call stack (HP-UX only).
Running HP Caliper to Produce a Call Stack Profile 171