svn commit: r265604 - stable/10/usr.sbin/pmcstat
Scott Long
scottl at FreeBSD.org
Wed May 7 20:20:54 UTC 2014
Author: scottl
Date: Wed May 7 20:20:52 2014
New Revision: 265604
URL: http://svnweb.freebsd.org/changeset/base/265604
Log:
Merged r262424-262425,265085
Add the -a option to pmcstat. This produces a full stack track on the
sampled points. See the man page for details on how this works.
Obtained from: Netflix, Inc.
Added:
stable/10/usr.sbin/pmcstat/pmcpl_annotate_cg.c
- copied, changed from r262424, head/usr.sbin/pmcstat/pmcpl_annotate_cg.c
stable/10/usr.sbin/pmcstat/pmcpl_annotate_cg.h
- copied, changed from r262424, head/usr.sbin/pmcstat/pmcpl_annotate_cg.h
Modified:
stable/10/usr.sbin/pmcstat/Makefile
stable/10/usr.sbin/pmcstat/pmcstat.8
stable/10/usr.sbin/pmcstat/pmcstat.c
stable/10/usr.sbin/pmcstat/pmcstat.h
stable/10/usr.sbin/pmcstat/pmcstat_log.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/usr.sbin/pmcstat/Makefile
==============================================================================
--- stable/10/usr.sbin/pmcstat/Makefile Wed May 7 20:18:50 2014 (r265603)
+++ stable/10/usr.sbin/pmcstat/Makefile Wed May 7 20:20:52 2014 (r265604)
@@ -9,6 +9,7 @@ DPADD= ${LIBELF} ${LIBKVM} ${LIBPMC} ${L
LDADD= -lelf -lkvm -lpmc -lm -lncurses
SRCS= pmcstat.c pmcstat.h pmcstat_log.c \
-pmcpl_callgraph.c pmcpl_gprof.c pmcpl_annotate.c pmcpl_calltree.c
+pmcpl_callgraph.c pmcpl_gprof.c pmcpl_annotate.c \
+pmcpl_annotate_cg.c pmcpl_calltree.c
.include <bsd.prog.mk>
Copied and modified: stable/10/usr.sbin/pmcstat/pmcpl_annotate_cg.c (from r262424, head/usr.sbin/pmcstat/pmcpl_annotate_cg.c)
==============================================================================
--- head/usr.sbin/pmcstat/pmcpl_annotate_cg.c Mon Feb 24 02:43:58 2014 (r262424, copy source)
+++ stable/10/usr.sbin/pmcstat/pmcpl_annotate_cg.c Wed May 7 20:20:52 2014 (r265604)
@@ -1,6 +1,7 @@
/*-
* Copyright (c) 2005-2007, Joseph Koshy
* Copyright (c) 2007 The FreeBSD Foundation
+ * Copyright (c) 2014, Adrian Chadd, Netflix Inc.
* All rights reserved.
*
* Portions of this software were developed by A. Joseph Koshy under
Copied and modified: stable/10/usr.sbin/pmcstat/pmcpl_annotate_cg.h (from r262424, head/usr.sbin/pmcstat/pmcpl_annotate_cg.h)
==============================================================================
--- head/usr.sbin/pmcstat/pmcpl_annotate_cg.h Mon Feb 24 02:43:58 2014 (r262424, copy source)
+++ stable/10/usr.sbin/pmcstat/pmcpl_annotate_cg.h Wed May 7 20:20:52 2014 (r265604)
@@ -1,6 +1,7 @@
/*-
* Copyright (c) 2005-2007, Joseph Koshy
* Copyright (c) 2007 The FreeBSD Foundation
+ * Copyright (c) 2014, Adrian Chadd, Netflix Inc.
* All rights reserved.
*
* Portions of this software were developed by A. Joseph Koshy under
Modified: stable/10/usr.sbin/pmcstat/pmcstat.8
==============================================================================
--- stable/10/usr.sbin/pmcstat/pmcstat.8 Wed May 7 20:18:50 2014 (r265603)
+++ stable/10/usr.sbin/pmcstat/pmcstat.8 Wed May 7 20:20:52 2014 (r265604)
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd September 19, 2008
+.Dd April 29, 2014
.Dt PMCSTAT 8
.Os
.Sh NAME
@@ -46,6 +46,7 @@
.Op Fl S Ar event-spec
.Op Fl T
.Op Fl W
+.Op Fl a Ar pathname
.Op Fl c Ar cpu-spec
.Op Fl d
.Op Fl f Ar pluginopt
@@ -221,6 +222,21 @@ This is an experimental feature intended
dynamic behaviour of processes in the system.
It may incur substantial overhead if enabled.
The default is for this feature to be disabled.
+.It Fl a Ar pathname
+Perform a symbol and file:line lookup for each address in each
+callgraph and save the output to
+.Ar pathname .
+Unlike
+.Fl m
+that only resolves the first symbol in the graph, this resolves
+every node in the callgraph, or prints out addresses if no
+lookup information is available.
+This option requires the
+.Fl R
+option to read in samples that were previously collected and
+saved with the
+.Fl o
+option.
.It Fl c Ar cpu-spec
Set the cpus for subsequent system mode PMCs specified on the
command line to
Modified: stable/10/usr.sbin/pmcstat/pmcstat.c
==============================================================================
--- stable/10/usr.sbin/pmcstat/pmcstat.c Wed May 7 20:18:50 2014 (r265603)
+++ stable/10/usr.sbin/pmcstat/pmcstat.c Wed May 7 20:20:52 2014 (r265604)
@@ -503,6 +503,7 @@ pmcstat_show_usage(void)
"\t -S spec\t allocate a system-wide sampling PMC\n"
"\t -T\t\t start in top mode\n"
"\t -W\t\t (toggle) show counts per context switch\n"
+ "\t -a <file>\t print sampled PCs and callgraph to \"file\"\n"
"\t -c cpu-list\t set cpus for subsequent system-wide PMCs\n"
"\t -d\t\t (toggle) track descendants\n"
"\t -f spec\t pass \"spec\" to as plugin option\n"
@@ -617,8 +618,14 @@ main(int argc, char **argv)
CPU_SET(hcpu, &cpumask);
while ((option = getopt(argc, argv,
- "CD:EF:G:M:NO:P:R:S:TWc:df:gk:m:n:o:p:qr:s:t:vw:z:")) != -1)
+ "CD:EF:G:M:NO:P:R:S:TWa:c:df:gk:m:n:o:p:qr:s:t:vw:z:")) != -1)
switch (option) {
+ case 'a': /* Annotate + callgraph */
+ args.pa_flags |= FLAG_DO_ANNOTATE;
+ args.pa_plugin = PMCSTAT_PL_ANNOTATE_CG;
+ graphfilename = optarg;
+ break;
+
case 'C': /* cumulative values */
use_cumulative_counts = !use_cumulative_counts;
args.pa_required |= FLAG_HAS_COUNTING_PMCS;
@@ -917,7 +924,8 @@ main(int argc, char **argv)
/* -m option is allowed with -R only. */
if (args.pa_flags & FLAG_DO_ANNOTATE && args.pa_inputpath == NULL)
- errx(EX_USAGE, "ERROR: option -m requires an input file");
+ errx(EX_USAGE, "ERROR: option %s requires an input file",
+ args.pa_plugin == PMCSTAT_PL_ANNOTATE ? "-m" : "-a");
/* -m option is not allowed combined with -g or -G. */
if (args.pa_flags & FLAG_DO_ANNOTATE &&
Modified: stable/10/usr.sbin/pmcstat/pmcstat.h
==============================================================================
--- stable/10/usr.sbin/pmcstat/pmcstat.h Wed May 7 20:18:50 2014 (r265603)
+++ stable/10/usr.sbin/pmcstat/pmcstat.h Wed May 7 20:20:52 2014 (r265604)
@@ -91,6 +91,7 @@
#define PMCSTAT_PL_GPROF 2
#define PMCSTAT_PL_ANNOTATE 3
#define PMCSTAT_PL_CALLTREE 4
+#define PMCSTAT_PL_ANNOTATE_CG 5
#define PMCSTAT_TOP_DELTA 0
#define PMCSTAT_TOP_ACCUM 1
Modified: stable/10/usr.sbin/pmcstat/pmcstat_log.c
==============================================================================
--- stable/10/usr.sbin/pmcstat/pmcstat_log.c Wed May 7 20:18:50 2014 (r265603)
+++ stable/10/usr.sbin/pmcstat/pmcstat_log.c Wed May 7 20:20:52 2014 (r265604)
@@ -149,6 +149,7 @@ struct pmcstat_process *pmcstat_kernproc
#include "pmcpl_gprof.h"
#include "pmcpl_callgraph.h"
#include "pmcpl_annotate.h"
+#include "pmcpl_annotate_cg.h"
#include "pmcpl_calltree.h"
static struct pmc_plugins {
@@ -214,6 +215,11 @@ static struct pmc_plugins {
.pl_topdisplay = pmcpl_ct_topdisplay
},
{
+ .pl_name = "annotate_cg",
+ .pl_process = pmcpl_annotate_cg_process
+ },
+
+ {
.pl_name = NULL
}
};
More information about the svn-src-stable
mailing list