[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] tools/xenalyze: Remove weighted cpi summaries
commit bd82c6cc4f40ee5ddb52237f3beba85b9f4cabfa Author: George Dunlap <george.dunlap@xxxxxxxxxx> AuthorDate: Mon Aug 8 10:42:48 2016 +0100 Commit: George Dunlap <george.dunlap@xxxxxxxxxx> CommitDate: Tue Aug 9 15:44:11 2016 +0100 tools/xenalyze: Remove weighted cpi summaries At the moment these structures are not used, and half of the code for collecting it is commented out. To be used they require further support for collecting hardware instruction counter data inside of Xen. Remove the code entirely; when they're wanted again they will be here in the git log. Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx> Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- tools/xentrace/xenalyze.c | 121 ---------------------------------------------- 1 file changed, 121 deletions(-) diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c index 3d06e45..30dcefb 100644 --- a/tools/xentrace/xenalyze.c +++ b/tools/xentrace/xenalyze.c @@ -147,7 +147,6 @@ int verbosity = 5; struct { unsigned scatterplot_interrupt_eip:1, - scatterplot_cpi:1, scatterplot_unpin_promote:1, scatterplot_cr3_switch:1, scatterplot_wake_to_halt:1, @@ -223,7 +222,6 @@ struct { } interval; } opt = { .scatterplot_interrupt_eip=0, - .scatterplot_cpi=0, .scatterplot_unpin_promote=0, .scatterplot_cr3_switch=0, .scatterplot_wake_to_halt=0, @@ -290,15 +288,6 @@ struct cycle_summary { struct interval_element interval; }; -struct weighted_cpi_summary { - int count; - unsigned long long instructions; - unsigned long long cycles; - float *cpi; - unsigned long long *cpi_weight; - struct interval_element interval; -}; - /* -- Symbol list information -- */ #define SYMBOL_ENTRIES_PER_STRUCT 1023 #define SYMBOL_NAME_SIZE 124 @@ -1672,7 +1661,6 @@ struct vcpu_data { struct cycle_framework f; struct cycle_summary runstates[RUNSTATE_MAX]; struct cycle_summary runnable_states[RUNNABLE_STATE_MAX]; - struct weighted_cpi_summary cpi; struct cycle_summary cpu_affinity_all, cpu_affinity_pcpu[MAX_CPUS]; enum { @@ -2297,54 +2285,6 @@ static inline void clear_interval_cycles(struct interval_element *e) { e->instructions = 0; } -#if 0 -static inline void update_cpi(struct weighted_cpi_summary *s, - unsigned long long i, - unsigned long long c) { -/* We don't know ahead of time how many samples there are, and working - * with dynamic stuff is a pain, and unnecessary. This algorithm will - * generate a sample set that approximates an even sample. We can - * then take the percentiles on this, and get an approximate value. */ - int lap, index; - - if ( opt.sample_size ) { - lap = (s->count/opt.sample_size)+1; - index =s->count % opt.sample_size; - - if((index - (lap/3))%lap == 0) { - if(!s->cpi) { - assert(!s->cpi_weight); - - s->cpi = malloc(sizeof(*s->cpi) * opt.sample_size); - s->cpi_weight = malloc(sizeof(*s->cpi_weight) * opt.sample_size); - if(!s->cpi || !s->cpi_weight) { - fprintf(stderr, "%s: malloc failed!\n", __func__); - error(ERR_SYSTEM, NULL); - } - } - assert(s->cpi_weight); - - s->cpi[index] = (float) c / i; - s->cpi_weight[index]=c; - } - } - - s->instructions += i; - s->cycles += c; - s->count++; - - s->interval.instructions += i; - s->interval.cycles += c; - s->interval.count++; -} - -static inline void clear_interval_cpi(struct weighted_cpi_summary *s) { - s->interval.cycles = 0; - s->interval.count = 0; - s->interval.instructions = 0; -} -#endif - static inline void print_cpu_affinity(struct cycle_summary *s, char *p) { if(s->count) { long long avg; @@ -2370,31 +2310,6 @@ static inline void print_cpu_affinity(struct cycle_summary *s, char *p) { } } -static inline void print_cpi_summary(struct weighted_cpi_summary *s) { - if(s->count) { - float avg; - - avg = (float)s->cycles / s->instructions; - - if ( opt.sample_size ) { - float p5, p50, p95; - int data_size = s->count; - - if(data_size > opt.sample_size) - data_size = opt.sample_size; - - p50 = weighted_percentile(s->cpi, s->cpi_weight, data_size, 50); - p5 = weighted_percentile(s->cpi, s->cpi_weight, data_size, 5); - p95 = weighted_percentile(s->cpi, s->cpi_weight, data_size, 95); - - printf(" CPI summary: %2.2f {%2.2f|%2.2f|%2.2f}\n", - avg, p5, p50, p95); - } else { - printf(" CPI summary: %2.2f\n", avg); - } - } -} - static inline void print_cycle_percent_summary(struct cycle_summary *s, tsc_t total, char *p) { if(s->count) { @@ -7324,31 +7239,6 @@ update: else if ( sevt.old_runstate == RUNSTATE_RUNNING || v->runstate.state == RUNSTATE_RUNNING ) { -#if 0 - /* A lot of traces include cpi that shouldn't... */ - if(perfctrs && v->runstate.tsc) { - unsigned long long run_cycles, run_instr; - double cpi; - - //run_cycles = r->p1 - v->runstate_p1_start; - run_cycles = ri->tsc - v->runstate.tsc; - run_instr = r->p2 - v->runstate.p2_start; - - cpi = ((double)run_cycles) / run_instr; - - if(opt.dump_all) { - printf(" cpi: %2.2lf ( %lld / %lld )\n", - cpi, run_cycles, run_instr); - } - - if(opt.scatterplot_cpi && v->d->did == 1) - printf("%lld,%2.2lf\n", - ri->tsc, cpi); - - if(opt.summary_info) - update_cpi(&v->cpi, run_instr, run_cycles); - } -#endif /* * Cases: * old running, v running: @@ -7520,7 +7410,6 @@ void sched_summary_vcpu(struct vcpu_data *v) } } } - print_cpi_summary(&v->cpi); print_cpu_affinity(&v->cpu_affinity_all, " cpu affinity"); for ( i = 0; i < MAX_CPUS ; i++) { @@ -9932,7 +9821,6 @@ enum { OPT_WITH_MMIO_ENUMERATION, OPT_WITH_INTERRUPT_EIP_ENUMERATION, OPT_SCATTERPLOT_INTERRUPT_EIP, - OPT_SCATTERPLOT_CPI, OPT_SCATTERPLOT_UNPIN_PROMOTE, OPT_SCATTERPLOT_CR3_SWITCH, OPT_SCATTERPLOT_WAKE_TO_HALT, @@ -10168,10 +10056,6 @@ error_t cmd_parser(int key, char *arg, struct argp_state *state) argp_usage(state); } break; - case OPT_SCATTERPLOT_CPI: - G.output_defined = 1; - opt.scatterplot_cpi=1; - break; case OPT_SCATTERPLOT_UNPIN_PROMOTE: G.output_defined = 1; opt.scatterplot_unpin_promote=1; @@ -10551,11 +10435,6 @@ const struct argp_option cmd_opts[] = { .group = OPT_GROUP_EXTRA, .doc = "Output a scatterplot of vmexit cycles for external interrupts of the given vector as a funciton of time.", }, - { .name = "scatterplot-cpi", - .key = OPT_SCATTERPLOT_CPI, - .group = OPT_GROUP_EXTRA, - .doc = "Output scatterplot of cpi.", }, - { .name = "scatterplot-unpin-promote", .key = OPT_SCATTERPLOT_UNPIN_PROMOTE, .group = OPT_GROUP_EXTRA, -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |