Re: [PATCH v2 04/16] qemu-file: Account for rate_limit usage on qemu_fflush()
On Fri, May 26, 2023 at 5:09 AM Juan Quintela wrote: > > Leonardo Brás wrote: > > On Mon, 2023-05-15 at 21:56 +0200, Juan Quintela wrote: > >> That is the moment we know we have transferred something. > >> > >> Signed-off-by: Juan Quintela > >> Reviewed-by: Cédric Le Goater > >> --- > >> migration/qemu-file.c | 7 +++ > >> 1 file changed, 3 insertions(+), 4 deletions(-) > >> > >> diff --git a/migration/qemu-file.c b/migration/qemu-file.c > >> index 4bc875b452..956bd2a580 100644 > >> --- a/migration/qemu-file.c > >> +++ b/migration/qemu-file.c > >> @@ -302,7 +302,9 @@ void qemu_fflush(QEMUFile *f) > >> _error) < 0) { > >> qemu_file_set_error_obj(f, -EIO, local_error); > >> } else { > >> -f->total_transferred += iov_size(f->iov, f->iovcnt); > >> +uint64_t size = iov_size(f->iov, f->iovcnt); > >> +qemu_file_acct_rate_limit(f, size); > >> +f->total_transferred += size; > >> } > >> > >> qemu_iovec_release_ram(f); > >> @@ -519,7 +521,6 @@ void qemu_put_buffer_async(QEMUFile *f, const uint8_t > >> *buf, size_t size, > >> return; > >> } > >> > >> -f->rate_limit_used += size; > >> add_to_iovec(f, buf, size, may_free); > >> } > >> > >> @@ -537,7 +538,6 @@ void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, > >> size_t size) > >> l = size; > >> } > >> memcpy(f->buf + f->buf_index, buf, l); > >> -f->rate_limit_used += l; > >> add_buf_to_iovec(f, l); > >> if (qemu_file_get_error(f)) { > >> break; > >> @@ -554,7 +554,6 @@ void qemu_put_byte(QEMUFile *f, int v) > >> } > >> > >> f->buf[f->buf_index] = v; > >> -f->rate_limit_used++; > >> add_buf_to_iovec(f, 1); > >> } > >> > > > > If we are counting transferred data at fflush, it makes sense to increase > > rate- > > limit accounting at the same place. It may be less granular, but is more > > efficient. > > Yeap, the whole point is that in my next series, rate_limit_used > dissapear, we just use transferred for both things(*). > > Later, Juan. > > *: It is a bit more complicated than that, but we go from three counters > to a single counter. > Seems great to simplify stuff. Thanks! Leo
Re: [PATCH v2 04/16] qemu-file: Account for rate_limit usage on qemu_fflush()
Leonardo Brás wrote: > On Mon, 2023-05-15 at 21:56 +0200, Juan Quintela wrote: >> That is the moment we know we have transferred something. >> >> Signed-off-by: Juan Quintela >> Reviewed-by: Cédric Le Goater >> --- >> migration/qemu-file.c | 7 +++ >> 1 file changed, 3 insertions(+), 4 deletions(-) >> >> diff --git a/migration/qemu-file.c b/migration/qemu-file.c >> index 4bc875b452..956bd2a580 100644 >> --- a/migration/qemu-file.c >> +++ b/migration/qemu-file.c >> @@ -302,7 +302,9 @@ void qemu_fflush(QEMUFile *f) >> _error) < 0) { >> qemu_file_set_error_obj(f, -EIO, local_error); >> } else { >> -f->total_transferred += iov_size(f->iov, f->iovcnt); >> +uint64_t size = iov_size(f->iov, f->iovcnt); >> +qemu_file_acct_rate_limit(f, size); >> +f->total_transferred += size; >> } >> >> qemu_iovec_release_ram(f); >> @@ -519,7 +521,6 @@ void qemu_put_buffer_async(QEMUFile *f, const uint8_t >> *buf, size_t size, >> return; >> } >> >> -f->rate_limit_used += size; >> add_to_iovec(f, buf, size, may_free); >> } >> >> @@ -537,7 +538,6 @@ void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, >> size_t size) >> l = size; >> } >> memcpy(f->buf + f->buf_index, buf, l); >> -f->rate_limit_used += l; >> add_buf_to_iovec(f, l); >> if (qemu_file_get_error(f)) { >> break; >> @@ -554,7 +554,6 @@ void qemu_put_byte(QEMUFile *f, int v) >> } >> >> f->buf[f->buf_index] = v; >> -f->rate_limit_used++; >> add_buf_to_iovec(f, 1); >> } >> > > If we are counting transferred data at fflush, it makes sense to increase > rate- > limit accounting at the same place. It may be less granular, but is more > efficient. Yeap, the whole point is that in my next series, rate_limit_used dissapear, we just use transferred for both things(*). Later, Juan. *: It is a bit more complicated than that, but we go from three counters to a single counter.
Re: [PATCH v2 04/16] qemu-file: Account for rate_limit usage on qemu_fflush()
On Mon, 2023-05-15 at 21:56 +0200, Juan Quintela wrote: > That is the moment we know we have transferred something. > > Signed-off-by: Juan Quintela > Reviewed-by: Cédric Le Goater > --- > migration/qemu-file.c | 7 +++ > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/migration/qemu-file.c b/migration/qemu-file.c > index 4bc875b452..956bd2a580 100644 > --- a/migration/qemu-file.c > +++ b/migration/qemu-file.c > @@ -302,7 +302,9 @@ void qemu_fflush(QEMUFile *f) > _error) < 0) { > qemu_file_set_error_obj(f, -EIO, local_error); > } else { > -f->total_transferred += iov_size(f->iov, f->iovcnt); > +uint64_t size = iov_size(f->iov, f->iovcnt); > +qemu_file_acct_rate_limit(f, size); > +f->total_transferred += size; > } > > qemu_iovec_release_ram(f); > @@ -519,7 +521,6 @@ void qemu_put_buffer_async(QEMUFile *f, const uint8_t > *buf, size_t size, > return; > } > > -f->rate_limit_used += size; > add_to_iovec(f, buf, size, may_free); > } > > @@ -537,7 +538,6 @@ void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, > size_t size) > l = size; > } > memcpy(f->buf + f->buf_index, buf, l); > -f->rate_limit_used += l; > add_buf_to_iovec(f, l); > if (qemu_file_get_error(f)) { > break; > @@ -554,7 +554,6 @@ void qemu_put_byte(QEMUFile *f, int v) > } > > f->buf[f->buf_index] = v; > -f->rate_limit_used++; > add_buf_to_iovec(f, 1); > } > If we are counting transferred data at fflush, it makes sense to increase rate- limit accounting at the same place. It may be less granular, but is more efficient. FWIW: Reviewed-by: Leonardo Bras
[PATCH v2 04/16] qemu-file: Account for rate_limit usage on qemu_fflush()
That is the moment we know we have transferred something. Signed-off-by: Juan Quintela Reviewed-by: Cédric Le Goater --- migration/qemu-file.c | 7 +++ 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/migration/qemu-file.c b/migration/qemu-file.c index 4bc875b452..956bd2a580 100644 --- a/migration/qemu-file.c +++ b/migration/qemu-file.c @@ -302,7 +302,9 @@ void qemu_fflush(QEMUFile *f) _error) < 0) { qemu_file_set_error_obj(f, -EIO, local_error); } else { -f->total_transferred += iov_size(f->iov, f->iovcnt); +uint64_t size = iov_size(f->iov, f->iovcnt); +qemu_file_acct_rate_limit(f, size); +f->total_transferred += size; } qemu_iovec_release_ram(f); @@ -519,7 +521,6 @@ void qemu_put_buffer_async(QEMUFile *f, const uint8_t *buf, size_t size, return; } -f->rate_limit_used += size; add_to_iovec(f, buf, size, may_free); } @@ -537,7 +538,6 @@ void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, size_t size) l = size; } memcpy(f->buf + f->buf_index, buf, l); -f->rate_limit_used += l; add_buf_to_iovec(f, l); if (qemu_file_get_error(f)) { break; @@ -554,7 +554,6 @@ void qemu_put_byte(QEMUFile *f, int v) } f->buf[f->buf_index] = v; -f->rate_limit_used++; add_buf_to_iovec(f, 1); } -- 2.40.1