block, bfq: use half slice_idle as a threshold to check short ttime
The value of the I/O plugging (idling) timeout is used also as the think-time threshold to decide whether a process has a short think time. In this respect, a good value of this timeout for rotational drives is un the order of several ms. Yet, this is often too long a time interval to be effective as a think-time threshold. This commit mitigates this problem (by a lot, according to tests), by halving the threshold. Tested-by: Jan Kara <jack@suse.cz> Signed-off-by: Paolo Valente <paolo.valente@linaro.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Родитель
a33df75c63
Коммит
b5f74ecacc
|
@ -5238,12 +5238,13 @@ static void bfq_update_has_short_ttime(struct bfq_data *bfqd,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Think time is infinite if no process is linked to
|
/* Think time is infinite if no process is linked to
|
||||||
* bfqq. Otherwise check average think time to
|
* bfqq. Otherwise check average think time to decide whether
|
||||||
* decide whether to mark as has_short_ttime
|
* to mark as has_short_ttime. To this goal, compare average
|
||||||
|
* think time with half the I/O-plugging timeout.
|
||||||
*/
|
*/
|
||||||
if (atomic_read(&bic->icq.ioc->active_ref) == 0 ||
|
if (atomic_read(&bic->icq.ioc->active_ref) == 0 ||
|
||||||
(bfq_sample_valid(bfqq->ttime.ttime_samples) &&
|
(bfq_sample_valid(bfqq->ttime.ttime_samples) &&
|
||||||
bfqq->ttime.ttime_mean > bfqd->bfq_slice_idle))
|
bfqq->ttime.ttime_mean > bfqd->bfq_slice_idle>>1))
|
||||||
has_short_ttime = false;
|
has_short_ttime = false;
|
||||||
|
|
||||||
state_changed = has_short_ttime != bfq_bfqq_has_short_ttime(bfqq);
|
state_changed = has_short_ttime != bfq_bfqq_has_short_ttime(bfqq);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче