mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-25 11:37:56 +00:00
912e603778
looking at a high resolution clock for each of the following events: function call, function return, interrupt entry, interrupt exit, and interesting branches. The differences between the times of these events are added at appropriate places in a ordinary histogram (as if very fast statistical profiling sampled the pc at those places) so that ordinary gprof can be used to analyze the times. gmon.h: Histogram counters need to be 4 bytes for microsecond resolutions. They will need to be larger for the 586 clock. The comments were vax-centric and wrong even on vaxes. Does anyone disagree? gprof4.c: The standard gprof should support counters of all integral sizes and the size of the counter should be in the gmon header. This hack will do until then. (Use gprof4 -u to examine the results of non-statistical profiling.) config/*: Non-statistical profiling is configured with `config -pp'. `config -p' still gives ordinary profiling. kgmon/*: Non-statistical profiling is enabled with `kgmon -B'. `kgmon -b' still enables ordinary profiling (and distables non-statistical profiling) if non-statistical profiling is configured.
130 lines
3.9 KiB
Groff
130 lines
3.9 KiB
Groff
.\" Copyright (c) 1983, 1991, 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the University of
|
|
.\" California, Berkeley and its contributors.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)kgmon.8 8.1 (Berkeley) 6/6/93
|
|
.\"
|
|
.Dd June 6, 1993
|
|
.Dt KGMON 8
|
|
.Os BSD 4.2
|
|
.Sh NAME
|
|
.Nm kgmon
|
|
.Nd generate a dump of the operating system's profile buffers
|
|
.Sh SYNOPSIS
|
|
.Nm kgmon
|
|
.Op Fl Bbhpr
|
|
.Op Fl M core
|
|
.Op Fl N system
|
|
.Sh DESCRIPTION
|
|
.Nm Kgmon
|
|
is a tool used when profiling the operating system.
|
|
When no arguments are supplied,
|
|
.Nm kgmon
|
|
indicates the state of operating system profiling as running,
|
|
off, or not configured.
|
|
(see
|
|
.Xr config 8 )
|
|
If the
|
|
.Fl p
|
|
flag is specified,
|
|
.Nm kgmon
|
|
extracts profile data from the operating system and produces a
|
|
.Pa gmon.out
|
|
file suitable for later analysis by
|
|
.Xr gprof 1 .
|
|
.Pp
|
|
The options are as follows:
|
|
.Bl -tag -width Ds
|
|
.It Fl B
|
|
Resume the collection of high resolution profile data.
|
|
.It Fl b
|
|
Resume the collection of low resolution profile data.
|
|
.It Fl h
|
|
Stop the collection of profile data.
|
|
.It Fl p
|
|
Dump the contents of the profile buffers into a
|
|
.Pa gmon.out
|
|
file.
|
|
.It Fl r
|
|
Reset all the profile buffers.
|
|
If the
|
|
.Fl p
|
|
flag is also specified, the
|
|
.Pa gmon.out
|
|
file is generated before the buffers are reset.
|
|
.It Fl M
|
|
Extract values associated with the name list from the specified core
|
|
instead of the default ``/dev/kmem''.
|
|
.It Fl N
|
|
Extract the name list from the specified system instead of the
|
|
default ``/kernel''.
|
|
.El
|
|
.Pp
|
|
If neither
|
|
.Fl B
|
|
nor
|
|
.Fl b
|
|
nor
|
|
.Fl h
|
|
is specified, the state of profiling collection remains unchanged.
|
|
For example, if the
|
|
.Fl p
|
|
flag is specified and profile data is being collected,
|
|
profiling will be momentarily suspended,
|
|
the operating system profile buffers will be dumped,
|
|
and profiling will be immediately resumed.
|
|
.Pp
|
|
The profile buffers should be reset when the resolution
|
|
of the profile data is changed.
|
|
.Sh FILES
|
|
.Bl -tag -width /dev/kmemx -compact
|
|
.It Pa /kernel
|
|
the default system
|
|
.It Pa /dev/kmem
|
|
the default memory
|
|
.El
|
|
.Sh SEE ALSO
|
|
.Xr gprof 1 ,
|
|
.Xr config 8
|
|
.Sh DIAGNOSTICS
|
|
Users with only read permission on
|
|
.Pa /dev/kmem
|
|
cannot change the state
|
|
of profiling collection.
|
|
They can get a
|
|
.Pa gmon.out
|
|
file with the warning that the data may be
|
|
inconsistent if profiling is in progress.
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
command appeared in
|
|
.Bx 4.2 .
|