qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH for-1.7?] the calculation of bytes_xfer in qemu_


From: Wangting (Kathy)
Subject: Re: [Qemu-devel] [PATCH for-1.7?] the calculation of bytes_xfer in qemu_put_buffer() is wrong
Date: Wed, 20 Nov 2013 05:28:28 +0000

Hi Paolo and Stefan,

I am really sorry for my email before that I didn't say clearly about the bug 
fix.

f->bytes_xfer means the number of bytes which is send from source to 
destination during the migration. It is limited by the f->xfer_limit which is 
converted from bandwidth. That means if bytes_xfer is larger than the limit, 
the current iteration will not do  block and memory migration util the next 
iteration.

But in function qemu_put_buffer, the statistics is wrong. The size of block 
migration is 1MB for each block, but the buffer size for sending is 
IO_BUF_SIZE(32768bytes). When it need to be send, 1MB block will be divided 
into small trunks, so f->bytes_xfer should be increased by the size of the 
small trunks every time which is actually send, in function qemu_put_buffer it 
should be the variable "l". 

Otherwise, f->bytes_xfer will be increased by (small trunks number * 1MB) while 
sending 1MB block, it is much larger than the size which is actually send, and 
it will soon be reached to the size of f->xfer_limit, so the current iteration 
will send less data blocks than expected. 

If you have any questions, please let me know, thank you very much.

Best wishes.

Ting

-----邮件原件-----
发件人: Paolo Bonzini [mailto:address@hidden 
发送时间: 2013年11月20日 2:08
收件人: Stefan Weil
抄送: Wangting (Kathy); zhangmin (S); Luonengjun; address@hidden; Qinling; 
Chentao (Boby); Wangrui (K); Wubin (H); Anthony Liguori
主题: Re: [Qemu-devel] [PATCH for-1.7?] the calculation of bytes_xfer in 
qemu_put_buffer() is wrong

Il 19/11/2013 18:55, Stefan Weil ha scritto:
>>> >> diff --git a/savevm.c b/savevm.c
>>> >> index 2f631d4..3f912dd 100644
>>> >> --- a/savevm.c
>>> >> +++ b/savevm.c
>>> >> @@ -794,7 +794,7 @@ void qemu_put_buffer(QEMUFile *f, const uint8_t 
>>> >> *buf, int size)
>>> >>          if (l > size)
>>> >>              l = size;
>>> >>          memcpy(f->buf + f->buf_index, buf, l);
>>> >> -        f->bytes_xfer += size;
>>> >> +        f->bytes_xfer += l;
>>> >>          if (f->ops->writev_buffer) {
>>> >>              add_to_iovec(f, f->buf + f->buf_index, l);
>>> >>          }
>>> >> --
>>> >> 1.7.3.1.msysgit.0
>> > Reviewed-by: Paolo Bonzini <address@hidden>
> 
> Should this patch be included in QEMU 1.7? It's obviously a bug fix, 
> so I assume yes.
> 

The committer didn't say what it fixes or whether it fixes anything.
But I'd guess it is something related to block migration.  In that case yes, it 
should be included.

Paolo

reply via email to

[Prev in Thread] Current Thread [Next in Thread]