]> xenbits.xensource.com Git - xenalyze.git/commitdiff
[global] Added interval_domain_time and interval_domain_time_all. Also modified...
authorGeorge Dunlap <gdunlap@gdunlap-desktop.(none)>
Wed, 24 Sep 2008 11:00:46 +0000 (12:00 +0100)
committerGeorge Dunlap <gdunlap@gdunlap-desktop.(none)>
Wed, 24 Sep 2008 11:00:46 +0000 (12:00 +0100)
analyze.c

index b9d1f82f047aea421e9e40d4538ee8ed5713f9ca..8148ca476732171a67da64c348dfa30c11e369e0 100644 (file)
--- a/analyze.c
+++ b/analyze.c
@@ -92,6 +92,7 @@ struct {
             INTERVAL_CR3_SCHEDULE_TIME,
             INTERVAL_CR3_SCHEDULE_ORDERED,
             INTERVAL_CR3_SHORT_SUMMARY,
+            INTERVAL_DOMAIN_TOTAL_TIME,
             INTERVAL_DOMAIN_SHORT_SUMMARY,
             INTERVAL_DOMAIN_GUEST_INTERRUPT,
             INTERVAL_DOMAIN_GRANT_MAPS
@@ -2365,7 +2366,8 @@ void interval_cr3_value_check(struct cr3_value_struct *cr3) {
         interval_list_add(&cr3->total_time.interval, desc);
     } else {
         /* Custom */
-        P.interval.cr3 = cr3;
+        if(cr3->gmfn == opt.interval.array.values[0])
+            P.interval.cr3 = cr3;
     }
 }
 
@@ -2479,7 +2481,8 @@ void interval_domain_value_check(struct domain_data *d) {
         snprintf(desc, 32, "%d", d->did);
         interval_list_add(&d->total_time.interval, desc);
     } else {
-        P.interval.domain.d = d;
+        if(d->did == opt.interval.array.values[0])
+            P.interval.domain.d = d;
     }
 }
 
@@ -2508,8 +2511,7 @@ void interval_domain_short_summary_output(void) {
         interval_cycle_percent_output(&d->total_time.interval);
 
         for(i=0; i<HVM_SHORT_SUMMARY_MAX; i++) 
-            __interval_cycle_percent_output(&d->hvm_short.s[i].interval,
-                                            interval_cycles);
+            interval_cycle_percent_output(&d->hvm_short.s[i].interval);
 
         printf("\n");
     }
@@ -4678,8 +4680,8 @@ void hvm_process(struct pcpu_info *p)
     struct record_info *ri = &p->ri;
     struct vcpu_data *v = p->current;
     struct hvm_data *h = &v->hvm;
-
-    if(v->d->did == IDLE_DOMAIN) {
+   if(v->d->did == IDLE_DOMAIN) {
         fprintf(warn, "%s: Strange, hvm record for idle domain!\n",
                 __func__);
         dump_generic(warn, ri);
@@ -7387,6 +7389,8 @@ enum {
     OPT_INTERVAL_CR3_SCHEDULE_TIME_ALL,
     OPT_INTERVAL_CR3_SCHEDULE_ORDERED,
     OPT_INTERVAL_CR3_SHORT_SUMMARY,
+    OPT_INTERVAL_DOMAIN_TOTAL_TIME,
+    OPT_INTERVAL_DOMAIN_TOTAL_TIME_ALL,
     OPT_INTERVAL_DOMAIN_SHORT_SUMMARY,
     OPT_INTERVAL_DOMAIN_GUEST_INTERRUPT,
     OPT_INTERVAL_DOMAIN_GRANT_MAPS,
@@ -7691,6 +7695,33 @@ error_t cmd_parser(int key, char *arg, struct argp_state *state)
         break;
     }
 
+    case OPT_INTERVAL_DOMAIN_TOTAL_TIME:
+    {
+        if(parse_array(arg, &opt.interval.array) < 0)
+            goto idtt_usage;
+        interval_table_alloc(opt.interval.array.count);
+        opt.interval.output = INTERVAL_DOMAIN_TOTAL_TIME;
+        opt.interval.check = INTERVAL_CHECK_DOMAIN;
+        opt.interval.mode = INTERVAL_MODE_ARRAY;
+        opt.interval_mode = 1;
+        opt.summary_info = 1;
+        G.output_defined = 1;
+        break;
+    idtt_usage:
+        fprintf(stderr, "Invalid input for domain_total_time\n");
+        argp_usage(state);
+        break;
+    }
+
+    case OPT_INTERVAL_DOMAIN_TOTAL_TIME_ALL:
+        opt.interval.output = INTERVAL_DOMAIN_TOTAL_TIME;
+        opt.interval.check = INTERVAL_CHECK_DOMAIN;
+        opt.interval.mode = INTERVAL_MODE_LIST;
+        opt.interval_mode = 1;
+        opt.summary_info = 1;
+        G.output_defined = 1;
+        break;
     case OPT_INTERVAL_DOMAIN_SHORT_SUMMARY:
     {
         if((parse_array(arg, &opt.interval.array) < 0)
@@ -7914,6 +7945,17 @@ const struct argp_option cmd_opts[] =  {
       .group = OPT_GROUP_INTERVAL,
       .doc = "Print a csv with the hvm short summary of cr3 value every interval.", },
 
+    { .name = "interval-domain-total-time",
+      .key = OPT_INTERVAL_DOMAIN_TOTAL_TIME,
+      .arg = "domain[,domain...]",
+      .group = OPT_GROUP_INTERVAL,
+      .doc = "Print a csv with the listed domain(s) total runtime every interval.", },
+
+    { .name = "interval-domain-total-time-all",
+      .key = OPT_INTERVAL_DOMAIN_TOTAL_TIME_ALL,
+      .group = OPT_GROUP_INTERVAL,
+      .doc = "Print a csv with all domains every interval.", },
+
     { .name = "interval-domain-short-summary",
       .key = OPT_INTERVAL_DOMAIN_SHORT_SUMMARY,
       .arg = "domain-id",