[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] libxc: save: drop code under ADAPTIVE_SAVE ifdef.
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1306228450 -3600 # Node ID dec2235272e76eb955cd7e7832c4e780fbbf1dea # Parent 23b423a3955785c9a8679c3a877c3472066a2e1f libxc: save: drop code under ADAPTIVE_SAVE ifdef. The ifdef was added in 2005 (7702:b3c2bc39d815) but, as far as I can see, was never enabled by default. Dropping it will help untangle some macros redefining functions etc. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com> --- diff -r 23b423a39557 -r dec2235272e7 tools/libxc/xc_domain_save.c --- a/tools/libxc/xc_domain_save.c Tue May 24 10:14:10 2011 +0100 +++ b/tools/libxc/xc_domain_save.c Tue May 24 10:14:10 2011 +0100 @@ -252,98 +252,6 @@ return write_exact(fd, buf, len); } -#ifdef ADAPTIVE_SAVE - -/* -** We control the rate at which we transmit (or save) to minimize impact -** on running domains (including the target if we're doing live migrate). -*/ - -#define MAX_MBIT_RATE 500 /* maximum transmit rate for migrate */ -#define START_MBIT_RATE 100 /* initial transmit rate for migrate */ - -/* Scaling factor to convert between a rate (in Mb/s) and time (in usecs) */ -#define RATE_TO_BTU 781250 - -/* Amount in bytes we allow ourselves to send in a burst */ -#define BURST_BUDGET (100*1024) - -/* We keep track of the current and previous transmission rate */ -static int mbit_rate, ombit_rate = 0; - -/* Have we reached the maximum transmission rate? */ -#define RATE_IS_MAX() (mbit_rate == MAX_MBIT_RATE) - -static inline void initialize_mbit_rate() -{ - mbit_rate = START_MBIT_RATE; -} - -static int ratewrite(xc_interface *xch, int io_fd, int live, void *buf, int n) -{ - static int budget = 0; - static int burst_time_us = -1; - static struct timeval last_put = { 0 }; - struct timeval now; - struct timespec delay; - long long delta; - - if ( START_MBIT_RATE == 0 ) - return noncached_write(io_fd, live, buf, n); - - budget -= n; - if ( budget < 0 ) - { - if ( mbit_rate != ombit_rate ) - { - burst_time_us = RATE_TO_BTU / mbit_rate; - ombit_rate = mbit_rate; - DPRINTF("rate limit: %d mbit/s burst budget %d slot time %d\n", - mbit_rate, BURST_BUDGET, burst_time_us); - } - if ( last_put.tv_sec == 0 ) - { - budget += BURST_BUDGET; - gettimeofday(&last_put, NULL); - } - else - { - while ( budget < 0 ) - { - gettimeofday(&now, NULL); - delta = tv_delta(&now, &last_put); - while ( delta > burst_time_us ) - { - budget += BURST_BUDGET; - last_put.tv_usec += burst_time_us; - if ( last_put.tv_usec > 1000000 ) - { - last_put.tv_usec -= 1000000; - last_put.tv_sec++; - } - delta -= burst_time_us; - } - if ( budget > 0 ) - break; - delay.tv_sec = 0; - delay.tv_nsec = 1000 * (burst_time_us - delta); - while ( delay.tv_nsec > 0 ) - if ( nanosleep(&delay, &delay) == 0 ) - break; - } - } - } - return noncached_write(io_fd, live, buf, n); -} - -#else /* ! ADAPTIVE SAVE */ - -#define RATE_IS_MAX() (0) -#define ratewrite(xch, _io_fd, _live, _buf, _n) noncached_write((xch), (_io_fd), (_live), (_buf), (_n)) -#define initialize_mbit_rate() - -#endif - /* like write_buffer for ratewrite, which returns number of bytes written */ static inline int ratewrite_buffer(xc_interface *xch, int dobuf, struct outbuf* ob, int fd, @@ -352,7 +260,7 @@ if ( dobuf ) return outbuf_hardwrite(xch, ob, fd, buf, len) ? -1 : len; else - return ratewrite(xch, fd, live, buf, len); + return noncached_write(xch, fd, live, buf, len); } static int print_stats(xc_interface *xch, uint32_t domid, int pages_sent, @@ -392,16 +300,6 @@ (int)((stats->dirty_count*PAGE_SIZE)/(wall_delta*(1000/8))), stats->dirty_count); -#ifdef ADAPTIVE_SAVE - if ( ((stats->dirty_count*PAGE_SIZE)/(wall_delta*(1000/8))) > mbit_rate ) - { - mbit_rate = (int)((stats->dirty_count*PAGE_SIZE)/(wall_delta*(1000/8))) - + 50; - if ( mbit_rate > MAX_MBIT_RATE ) - mbit_rate = MAX_MBIT_RATE; - } -#endif - d0_cpu_last = d0_cpu_now; d1_cpu_last = d1_cpu_now; wall_last = wall_now; @@ -979,8 +877,6 @@ max_iters = max_iters ? : DEF_MAX_ITERS; max_factor = max_factor ? : DEF_MAX_FACTOR; - initialize_mbit_rate(); - if ( !get_platform_info(xch, dom, &ctx->max_mfn, &ctx->hvirt_start, &ctx->pt_levels, &dinfo->guest_width) ) { @@ -1170,9 +1066,6 @@ copypages: #define wrexact(fd, buf, len) write_buffer(xch, last_iter, &ob, (fd), (buf), (len)) -#ifdef ratewrite -#undef ratewrite -#endif #define ratewrite(fd, live, buf, len) ratewrite_buffer(xch, last_iter, &ob, (fd), (live), (buf), (len)) /* Now write out each data page, canonicalising page tables as we go... */ @@ -1509,8 +1402,7 @@ if ( live ) { - if ( ((sent_this_iter > sent_last_iter) && RATE_IS_MAX()) || - (iter >= max_iters) || + if ( (iter >= max_iters) || (sent_this_iter+skip_this_iter < 50) || (total_sent > dinfo->p2m_size*max_factor) ) { _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |