|
[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 |