svn commit: r212176 - head/usr.sbin/pmcstat

Fabien Thomas fabient at FreeBSD.org
Fri Sep 3 13:54:03 UTC 2010


Author: fabient
Date: Fri Sep  3 13:54:02 2010
New Revision: 212176
URL: http://svn.freebsd.org/changeset/base/212176

Log:
  When an asm location cannot be resolved to a function the cost
  will be spread as small value and then filtered by the threshold.
  As a first step solution display the number of event that cannot
  be resolved as a valid function location.
  
  MFC after:	1week

Modified:
  head/usr.sbin/pmcstat/pmcpl_callgraph.c
  head/usr.sbin/pmcstat/pmcpl_calltree.c
  head/usr.sbin/pmcstat/pmcstat_log.c
  head/usr.sbin/pmcstat/pmcstat_log.h

Modified: head/usr.sbin/pmcstat/pmcpl_callgraph.c
==============================================================================
--- head/usr.sbin/pmcstat/pmcpl_callgraph.c	Fri Sep  3 11:58:50 2010	(r212175)
+++ head/usr.sbin/pmcstat/pmcpl_callgraph.c	Fri Sep  3 13:54:02 2010	(r212176)
@@ -149,6 +149,8 @@ pmcstat_cgnode_hash_lookup_pc(struct pmc
 	 */
 	if ((sym = pmcstat_symbol_search(image, pc)) != NULL)
 		pc = sym->ps_start;
+	else
+		pmcstat_stats.ps_samples_unknown_function++;
 
 	for (hash = i = 0; i < sizeof(uintfptr_t); i++)
 		hash += (pc >> i) & 0xFF;

Modified: head/usr.sbin/pmcstat/pmcpl_calltree.c
==============================================================================
--- head/usr.sbin/pmcstat/pmcpl_calltree.c	Fri Sep  3 11:58:50 2010	(r212175)
+++ head/usr.sbin/pmcstat/pmcpl_calltree.c	Fri Sep  3 13:54:02 2010	(r212176)
@@ -615,6 +615,8 @@ pmcpl_ct_node_hash_lookup_pc(struct pmcp
 	 */
 	if ((sym = pmcstat_symbol_search(image, pc)) != NULL)
 		pc = sym->ps_start;
+	else
+		pmcstat_stats.ps_samples_unknown_function++;
 
 	for (hash = i = 0; i < (int)sizeof(uintfptr_t); i++)
 		hash += (pc >> i) & 0xFF;

Modified: head/usr.sbin/pmcstat/pmcstat_log.c
==============================================================================
--- head/usr.sbin/pmcstat/pmcstat_log.c	Fri Sep  3 11:58:50 2010	(r212175)
+++ head/usr.sbin/pmcstat/pmcstat_log.c	Fri Sep  3 13:54:02 2010	(r212176)
@@ -2168,6 +2168,7 @@ pmcstat_shutdown_logging(void)
 		PRINT("#samples/total", samples_total);
 		PRINT("#samples/unclaimed", samples_unknown_offset);
 		PRINT("#samples/unknown-object", samples_indeterminable);
+		PRINT("#samples/unknown-function", samples_unknown_function);
 		PRINT("#callchain/dubious-frames", callchain_dubious_frames);
 	}
 

Modified: head/usr.sbin/pmcstat/pmcstat_log.h
==============================================================================
--- head/usr.sbin/pmcstat/pmcstat_log.h	Fri Sep  3 11:58:50 2010	(r212175)
+++ head/usr.sbin/pmcstat/pmcstat_log.h	Fri Sep  3 13:54:02 2010	(r212176)
@@ -164,6 +164,7 @@ struct pmcstat_stats {
 	int ps_samples_skipped; /* #samples filtered out for any reason */
 	int ps_samples_unknown_offset;	/* #samples of rank 0 not in a map */
 	int ps_samples_indeterminable;	/* #samples in indeterminable images */
+	int ps_samples_unknown_function;/* #samples with unknown function at offset */
 	int ps_callchain_dubious_frames;/* #dubious frame pointers seen */
 };
 extern struct pmcstat_stats pmcstat_stats; /* statistics */


More information about the svn-src-head mailing list