aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/xc/lib/xc_linux_save.c64
-rw-r--r--tools/xc/py/Xc.c4
-rw-r--r--xen/common/dom0_ops.c1
-rw-r--r--xen/common/domain.c1
4 files changed, 31 insertions, 39 deletions
diff --git a/tools/xc/lib/xc_linux_save.c b/tools/xc/lib/xc_linux_save.c
index 857007fd3e..2d31b3dae2 100644
--- a/tools/xc/lib/xc_linux_save.c
+++ b/tools/xc/lib/xc_linux_save.c
@@ -93,51 +93,44 @@ long long tvdelta( struct timeval *new, struct timeval *old )
(new->tv_usec - old->tv_usec);
}
-int track_cpu_usage_dom0( int xc_handle, int print )
+int track_cpu_usage( int xc_handle, u64 domid, int pages, int print )
{
static struct timeval wall_last;
- static long long cpu_last;
+ static long long d0_cpu_last;
+ static long long d1_cpu_last;
struct timeval wall_now;
- long long cpu_now, wall_delta, cpu_delta;
+ long long wall_delta;
+ long long d0_cpu_now, d0_cpu_delta;
+ long long d1_cpu_now, d1_cpu_delta;
- gettimeofday(&wall_now, NULL);
-
- cpu_now = xc_domain_get_cpu_usage( xc_handle, 0 )/1000;
-
- wall_delta = tvdelta(&wall_now,&wall_last)/1000;
- cpu_delta = (cpu_now - cpu_last)/1000;
-
- if(print)
- printf("Dom0 : wall delta %lldms, cpu delta %lldms : %d%%\n",
- wall_delta, cpu_delta, (cpu_delta*100)/wall_delta);
- cpu_last = cpu_now;
- wall_last = wall_now;
+ gettimeofday(&wall_now, NULL);
- return 0;
-}
+ d0_cpu_now = xc_domain_get_cpu_usage( xc_handle, 0 )/1000;
+ d1_cpu_now = xc_domain_get_cpu_usage( xc_handle, domid )/1000;
-int track_cpu_usage_target( int xc_handle, u64 domid, int print )
-{
- static struct timeval wall_last;
- static long long cpu_last;
-
- struct timeval wall_now;
- long long cpu_now, wall_delta, cpu_delta;
+ if ( d0_cpu_now == -1 || d1_cpu_now == -1 )
+ {
+ printf("ARRHHH!!\n");
+ }
- gettimeofday(&wall_now, NULL);
+ wall_delta = tvdelta(&wall_now,&wall_last)/1000;
- cpu_now = xc_domain_get_cpu_usage( xc_handle, domid )/1000;
+ if ( wall_delta == 0 ) wall_delta = 1;
- wall_delta = tvdelta(&wall_now,&wall_last)/1000;
- cpu_delta = (cpu_now - cpu_last)/1000;
+ d0_cpu_delta = (d0_cpu_now - d0_cpu_last)/1000;
+ d1_cpu_delta = (d1_cpu_now - d1_cpu_last)/1000;
if(print)
- printf("Target: wall delta %lldms, cpu delta %lldms : %d%%\n",
- wall_delta, cpu_delta, (cpu_delta*100)/wall_delta);
-
- cpu_last = cpu_now;
+ printf("interval %lldms, dom0 used %lldms (%d%%), target used %lldms (%d%%), b/w %dMb/s\n",
+ wall_delta,
+ d0_cpu_delta, (int)((d0_cpu_delta*100)/wall_delta),
+ d1_cpu_delta, (int)((d1_cpu_delta*100)/wall_delta),
+ (int)((pages*PAGE_SIZE*8)/(wall_delta*1000)));
+
+ d0_cpu_last = d0_cpu_now;
+ d1_cpu_last = d1_cpu_now;
wall_last = wall_now;
return 0;
@@ -422,8 +415,7 @@ int xc_linux_save(int xc_handle,
goto out;
}
- track_cpu_usage_dom0(xc_handle, 0);
- track_cpu_usage_target( xc_handle, domid, 0);
+ track_cpu_usage( xc_handle, domid, 0, 0);
/* Now write out each data page, canonicalising page tables as we go... */
@@ -657,9 +649,7 @@ int xc_linux_save(int xc_handle,
verbose_printf("\b\b\b\b100%% (pages sent= %d, skipped= %d )\n",
sent_this_iter, skip_this_iter );
- track_cpu_usage_dom0(xc_handle, 1);
- track_cpu_usage_target( xc_handle, domid, 1);
-
+ track_cpu_usage( xc_handle, domid, sent_this_iter, 1);
if ( last_iter )
{
diff --git a/tools/xc/py/Xc.c b/tools/xc/py/Xc.c
index 8a6e3b22ef..8641259c63 100644
--- a/tools/xc/py/Xc.c
+++ b/tools/xc/py/Xc.c
@@ -318,6 +318,10 @@ static PyObject *pyxc_linux_save(PyObject *self,
if ( xc_linux_save(xc->xc_handle, dom, flags, writerfn, gfd) == 0 )
{
+ /* kill domain. We don't want to do this for checkpointing, but
+ if we don't do it here I think people will hurt themselves
+ by accident... */
+ xc_domain_destroy( xc->xc_handle, dom, 1 );
gzclose(gfd);
close(fd);
diff --git a/xen/common/dom0_ops.c b/xen/common/dom0_ops.c
index 780e76e638..586a3a1270 100644
--- a/xen/common/dom0_ops.c
+++ b/xen/common/dom0_ops.c
@@ -113,7 +113,6 @@ long do_dom0_op(dom0_op_t *u_dom0_op)
if( ret == 0 && op->u.stopdomain.sync == 1 )
{
extern long do_block( void );
- printk("T\n");
do_block(); // Yuk...
}
}
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 52becabf5c..894bb7ba05 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -271,7 +271,6 @@ void stop_domain(void)
kick Dom0 */
{
struct task_struct *p;
- printk("S\n");
guest_schedule_to_run( p = find_domain_by_id(0ULL) );
put_task_struct(p);
}