[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 9/9] qemu-file: Account for rate_limit usage on qemu_fflush()
From: |
Juan Quintela |
Subject: |
Re: [PATCH 9/9] qemu-file: Account for rate_limit usage on qemu_fflush() |
Date: |
Fri, 05 May 2023 14:14:45 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) |
Daniel P. Berrangé <berrange@redhat.com> wrote:
>> >
>> > This has a slight semantic behavioural change.
>>
>> Yeap.
>>
>> See the answer to Peter. But three things came to mind:
>>
>> a - the size of the buffer is small (between 32KB and 256KB depending
>> how you count it). So we are going to call qemu_fflush() really
>> soon.
>>
>> b - We are using this value to calculate how much we can send through
>> the wire. Here we are saything how much we have accepted to send.
>>
>> c - When using multifd the number of bytes that we send through the qemu
>> file is even smaller. migration-test multifd test send 300MB of data
>> through multifd channels and around 300KB on the qemu_file channel.
>>
>>
>> >
>> > By accounting for rate limit in the qemu_put functions, we ensure
>> > that we stop growing the iovec when rate limiting activates.
>> >
>> > If we only apply rate limit in the the flush function, that will
>> > let the f->iov continue to accumulate buffers, while we have
>> > rate limited the actual transfer.
>>
>> 256KB maximum. Our accounting has bigger errors than that.
>>
>>
>> > This makes me uneasy - it feels like a bad idea to continue to
>> > accumulate buffers if we're not ready to send them
>>
>> I still think that the change is correct. But as you and Peter have
>> concerns about it, I will think a bit more about it.
>
> If Peter's calculations are correct, then I don't have any objection,
> as that's a small overhead.
#define IOV_MAX 1024
....
#define IO_BUF_SIZE 32768
#define MAX_IOV_SIZE MIN_CONST(IOV_MAX, 64)
struct QEMUFile {
...
uint8_t buf[IO_BUF_SIZE];
struct iovec iov[MAX_IOV_SIZE];
....
}
Later, Juan.
- Re: [PATCH 8/9] qemu-file: Make ram_control_save_page() use accessors for rate_limit, (continued)
[PATCH 3/9] qemu-file: make qemu_file_[sg]et_rate_limit() use an uint64_t, Juan Quintela, 2023/05/04
Re: [PATCH 0/9] QEMU file cleanups, Peter Xu, 2023/05/04