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
        }
 };
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to