8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / cmd / sgs / link_audit / man / perfcnt.man
blob6f9058a3b44077caedd6b41d81dc76396dbba70b
1 .\" Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
2 .\"
3 .\" CDDL HEADER START
4 .\"
5 .\" The contents of this file are subject to the terms of the
6 .\" Common Development and Distribution License (the "License").
7 .\" You may not use this file except in compliance with the License.
8 .\"
9 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 .\" or http://www.opensolaris.org/os/licensing.
11 .\" See the License for the specific language governing permissions
12 .\" and limitations under the License.
13 .\"
14 .\" When distributing Covered Code, include this CDDL HEADER in each
15 .\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 .\" If applicable, add the following below this CDDL HEADER, with the
17 .\" fields enclosed by brackets "[]" replaced with your own identifying
18 .\" information: Portions Copyright [yyyy] [name of copyright owner]
19 .\"
20 .\" CDDL HEADER END
21 .\"
22 .if n .tr \--
23 .TH perfcnt 1 "18 Nov 1996"
24 .SH NAME
25 perfcnt \- trace the amount of time spent in each function call
26 .SH SYNOPSIS
27 .B perfcnt
29 .B -f
30 .I bindfromlist
31 ] [
32 .B t
33 .I bindtolist
34 ] [
35 .B -l
36 .I perfcntlib
37 ] executable [executable arguments ...]
38 .SH AVAILABILITY
39 .LP
40 SUNWosdem
41 .SH DESCRIPTION
42 .B perfcnt
43 executes the specified command and tracks the amount of time
44 that is spent in each procedure call.
45 .B perfcnt
46 traces all of the procedure calls that occur between dynamic objects
47 via the
48 .I Procedure Linkage Table, so only those procedure calls which are
49 bound to the
50 .I Procedure Linkage Table
51 will be traced.
52 .LP
53 .B perfcnt
54 has the limitation that it does not work with a threaded program nor
55 any programs which use procedures which are dependent upon the
56 stack frame.  See
57 .I NOTES
58 below
59 .SH OPTIONS
60 .TP 10
61 .BI \-f " bindfromlist"
62 A colon separated list of libraries that are to be
63 traced.  Only calls from these libraries will be traced.  The default
64 is to trace all calls.
65 .TP
66 .BI \-t " bindtolist"
67 A colon separated list of libraries taht are to be traced.
68 Only calls to these libraries will be traced.  The default is
69 to trace all calls.
70 .TP
71 .BI \-l " perfcntlib"
72 specify an alternate perfcnt.so 
73 .I Link-Auditing
74 library to use.
75 .SH EXAMPLES
76 The example tracks the usage of the libelf.so.1 library when performing
77 a nm.
78 .LP
79 .nf
80 .ft 3
81 % perfcnt -t/usr/lib/libelf.so.1 nm /usr/lib/libc.so.1
82 /usr/lib/libc.so.1:
84 [Index]   Value      Size    Type  Bind  Other Shndx   Name
86 [457]   |         0|       0|NOTY |LOCL |0    |UNDEF  |
87 [2]     |       148|       0|SECT |LOCL |0    |1      |
88 [3]     |     15232|       0|SECT |LOCL |0    |2      |
89 [4]     |     45120|       0|SECT |LOCL |0    |3      |
90 [5]     |     64024|       0|SECT |LOCL |0    |4      |
91 \.\.\.
92 [1893]  |    347660|      88|FUNC |LOCL |0    |12     |ypstub_perror
93 [1895]  |    347280|     380|FUNC |LOCL |0    |12     |ypstub_sperror
94 [714]   |    663472|       8|OBJT |LOCL |0    |22     |zero
97 Perf Counts for: nm
99               SYMBOL    c_count     tim         avg. tim        tot. %
100 ---------------------------------------------------------------------
101           elf_getscn    1           4.03            4.03        0.01%
102             elf_kind    1           4.36            4.36        0.01%
103         _elf32_fsize    7          50.80            7.26        0.09%
104      _elf32_xlatetom    6          67.47           11.24        0.11%
105          elf_version    1          72.50           72.50        0.12%
106        elf32_getshdr    33         77.42            2.35        0.13%
107          elf_nextscn    33         83.36            2.53        0.14%
108              elf_end    1         131.91          131.91        0.22%
109          elf_getdata    2         138.74           69.37        0.23%
110            elf_begin    1         171.74          171.74        0.29%
111        elf32_getehdr    1         214.81          214.81        0.36%
112          _elf_getscn    4254     9755.89            2.29        16.38%
113           elf_strptr    4254    48784.97           11.47        81.91%
114 ---------------------------------------------------------------------
115                                                 Total Time: 59557.98
119 .SH NOTES
121 .B perfcnt
122 command is a demonstration of the
123 .I Link-Auditing
124 interface of the run-time linker (which is documented in
125 .TZ LLM
126 \), and it is not useful in all environments.  This program
127 will not work with a threaded application and should not be
128 used with one.  Also, in order to track the
129 time spent in a procedure both the
130 entry and exit of the procedure must be tracked.  Because this causes
131 an additional stack frame to be created for each procedure call 
132 it is not compatible with all library routines.
133 More details on this can be found in the
134 .I Link-Auditing
135 section of
136 .TZ LLM
137 .SH SEE ALSO
138 .BR ld.so.1 (1)
140 .TZ LLM