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-all
mailing list