Re: [PATCH 1/2] blk-throtl: make latency= absolute
From: Shaohua Li
Date: Thu Nov 09 2017 - 23:27:40 EST
On Thu, Nov 09, 2017 at 03:42:58PM -0800, Tejun Heo wrote:
> Hello, Shaohua.
>
> On Thu, Nov 09, 2017 at 03:12:12PM -0800, Shaohua Li wrote:
> > The percentage latency makes sense, but the absolute latency doesn't to me. A
> > 4k IO latency could be much smaller than 1M IO latency. If we don't add
> > baseline latency, we can't specify a latency target which works for both 4k and
> > 1M IO.
>
> It isn't adaptive for sure. I think it's still useful for the
> following reasons.
>
> 1. The absolute latency target is by nature both workload and device
> dependent. For a lot of use cases, coming up with a decent number
> should be possible.
>
> 2. There are many use cases which aren't sensitive to the level where
> they care much about the different between small and large
> requests. e.g. protecting a managerial job so that it doesn't
> completely stall doesn't require tuning things to that level. A
> value which is comfortably higher than usually expected latencies
> would often be enough (say 100ms).
>
> 3. It's also useful for verification / testing.
I think the absolute latency would only work for HD. For a SSD, a 4k latency
probably is 60us and 1M latency is 500us. The disk must be very contended to
make 4k latency reach 500us. Not sensitive doesn't mean no protection. If the
use case sets rough latency, say 1ms, there will be no protection for 4k IO at
all. The baseline latency is pretty reliable for SSD actually. So I'd rather
keeping the baseline latency for SSD but using absolute latency for HD, which
can be done easily by setting DFL_HD_BASELINE_LATENCY to 0.
Thanks,
Shaohua