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
This commit is contained in:
parent
9cb74fce5a
commit
757a8d026a
@ -149,6 +149,8 @@ pmcstat_cgnode_hash_lookup_pc(struct pmcstat_process *pp, pmc_id_t pmcid,
|
||||
*/
|
||||
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;
|
||||
|
@ -615,6 +615,8 @@ pmcpl_ct_node_hash_lookup_pc(struct pmcpl_ct_node *parent,
|
||||
*/
|
||||
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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user