diff options
-rw-r--r-- | tools/xc/lib/xc_linux_save.c | 64 | ||||
-rw-r--r-- | tools/xc/py/Xc.c | 4 | ||||
-rw-r--r-- | xen/common/dom0_ops.c | 1 | ||||
-rw-r--r-- | xen/common/domain.c | 1 |
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); } |