On Tue, Feb 21, 2017 at 11:58:00AM +0100, Alberto Garcia wrote: > On Mon 20 Feb 2017 05:52:04 PM CET, Stefan Hajnoczi wrote: > > The disk I/O throttling options have been listed for a long time but > > never explained on the QEMU man page. > > > +@item bps=@var{b},bps_rd=@var{r},bps_wr=@var{w} > > +Specify bandwidth throttling limits in bytes per second, either for all > > request > > +types or for reads or writes only. > > Perhaps for the manual page it makes sense to use them, but bps, bps_rd, > etc. are the legacy names for those options. They're internally renamed > to throttling.bps-total, throttling.bps-read, ...
I used the parameter names already listed in the -drive documentation. We need to keep the legacy names but I will add another patch that documents the new names and encourages using them. > > Values must be larger than the maximum > > +request size to avoid timeouts or hangs in the guest. At minimum use 2 > > MB/s > > +for disks. > > Is this so? throttle_compute_wait() does not use the request size at > all. The size is used to do the accounting afterwards. In other words: > requests are not throttled if they exceed the limit, they are throttled > after the limit has been exceeded by previous requests. > > A low limit will certainly slow down the guest and can cause > timeouts, but I don't know if being larger or smaller than the maximum > request size is what makes the difference. You are right, I'm still have the behavior of the old throttling implementation in mind. I'd still like to recommend a sane minimum because anything around the size of a single request leads to timeouts and hangs inside the guest. How about: Small values can lead to timeouts or hangs inside the guest. A safe minimum for disks is 2 MB/s. > > +@item bps_max=@var{bm},bps_rd_max=@var{rm},bps_wr_max=@var{wm} > > +Specify bursts in bytes per second, either for all request types or for > > reads > > +or writes only. Bursts allow the guest I/O to spike above the limit > > +temporarily. The default burst value is 1/10th of the limit. > > "The default burst value is 1/10th of the limit" is an implementation > detail that the user doesn't need to know about. What it means is that a > bps limit of 10 MB/s is implemented internally as 1MB per 100ms. > > I would leave that out, it doesn't even make sense that the burst limit > is lower than the normal limit, we actually forbid that (aaa1e77ffae52). Unfortunately the bps_max = avg / 10 default value is visible via query-block. A bug was recently reported about this: https://bugzilla.redhat.com/show_bug.cgi?id=1414630 Would you prefer a private field in the throttling code so this detail is hidden from users? > > +@item iops=@var{i},iops_rd=@var{r},iops_wr=@var{w} > > +Specify request rate limits in requests per second, either for all request > > +types or for reads or writes only. > > > +@item bps_max=@var{bm},bps_rd_max=@var{rm},bps_wr_max=@var{wm} > > You meant iops_max, iops_rd_max and iops_wr_max here? Yes, thanks! Will fix in v2. Stefan
signature.asc
Description: PGP signature